Skip to main content

Overview

This package allows you to read/write pandas dataframes in MongoDB in the simplest way possible.

  • Free software: MIT license

Quick Start

Install pdmongo:

pip install pdmongo

Write a pandas DataFrame to a MongoDB collection:

import pandas as pd
import pdmongo as pdm

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df.to_mongo("MyCollection", "mongodb://localhost:27017/mydb")

Read a MongoDB collection into a pandas DataFrame:

import pdmongo as pdm

df = pdm.read_mongo("MyCollection", [], "mongodb://localhost:27017/mydb")
print(df)

Examples / use cases

Reading a MongoDB collection into a pandas data frame (aggregation query)

You can use an aggregation query to filter/transform data in MongoDB before fetching them into a data frame. This allows you to delegate the slow operation to MongoDB.

Reading a collection from MongoDB into a pandas DataFrame by using an aggregation query:

import pdmongo as pdm
import pandas as pd

# First generate some data and write them to MongoDB
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df.to_mongo(df, 'MyCollection', "mongodb://localhost:27017/mydb")

# Filter with an aggregate query and parse results into a data frame.
query = [{"$match": {'A': 1} }]
df = pdm.read_mongo("MyCollection", query, "mongodb://localhost:27017/mydb")
print(df) # Only values where A > 1 is returned

The query accepts the same arguments as the aggregate method of pymongo package.

Write MongoDB to a PostgreSQL table

You can write a MongoDB collection to a PostgreSQL table:

import numpy as np
import pandas as pd
import pdmongo as pdm
from sqlalchemy import create_engine

# Generate some data and write them to MongoDB
df = pd.DataFrame({'A': [1, 2, 3]})
df.to_mongo("MyCollection", "mongodb://localhost:27017/mydb")

# Read data from MongoDB and write them to PostgreSQL
new_df = pdm.read_mongo("MyCollection", [], "mongodb://localhost:27017/mydb")
engine = create_engine('postgres://postgres:postgres@localhost:5432', echo=False)
new_df[["A"]].to_sql("APostgresTable", engine)

Plot data retrieved from a MongoDB Collection

You can plot a collection retrieved from MongoDB

import numpy as np
import pandas as pd
import pdmongo as pdm
import matplotlib.pyplot as plt

# Generate data and write them to MongoDB
df = pd.DataFrame({'Value': np.random.randn(1000)})
df.to_mongo('TimeSeries', 'mongodb://localhost:27017/mydb')

# Read collection from MongoDB and plot data
new_df = pdm.read_mongo("TimeSeries", [], "mongodb://localhost:27017/mydb")
new_df.plot()
plt.show()

Installation

pip install pdmongo

You can also install the in-development version with:

pip install https://github.com/pakallis/python-pandas-mongo/archive/master.zip

Documentation

You can find the documentation at:

https://python-pandas-mongo.readthedocs.io/

Development

To run the all tests run:

tox

Note, to combine the coverage data from all the tox environments run:

Windows

set PYTEST_ADDOPTS=--cov-append
tox

Other

PYTEST_ADDOPTS=--cov-append tox

Changelog

0.3.4 (2022-11-17)

  • Support for python3.7-3.10

  • Fix wrong version of Python in CI

0.3.3 (2022-11-17)

  • Restrict pandas to >=0.20,<1.6

  • Restrict pymongo to >=13,<4.4

  • Remove hypothesis

  • Run tests with tox in CI

  • Add flake8 checks in CI

0.2.3 (2022-11-12)

  • Add prepare release script

0.2.2 (2022-11-12)

  • Fix lint offenses

0.2.1 (2022-11-12)

  • Minor changes

0.2.0 (2022-11-12)

  • Add compatibility for pymongo 4+

0.1.0 (2020-05-05)

  • Added static typing

  • Added mypy to travis CI

  • Removed unecessary params

0.0.2 (2020-05-04)

  • Dropped support for pypy3

0.0.1 (2020-04-30)

  • Added read_mongo and basic support for reading MongoDB collections into pandas dataframes

  • Added to_mongo and basic support for writing pandas dataframes in MongoDB collections

0.0.0 (2020-03-22)

  • First release on PyPI.

Metadata

Release files for pdmongo 0.3.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pdmongo 0.3.4
File Size Uploaded
pdmongo-0.3.4.tar.gz 15.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pdmongo 0.3.4
File Interpreter ABI Platform
pdmongo-0.3.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 21.6 kB

Release files / pdmongo-0.3.4.tar.gz

Download URL pdmongo-0.3.4.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
40d9ff3de1d6f3c2736c3424a765b88b71c27bb137557a420e7fc2e90fca5311
BLAKE2b-256 checksum
How to use checksums
bcd840ec0a1bd0da59307eda0c2ade656ef951b13b79c7ba4f9c98e47ca9c209
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.5

Release files / pdmongo-0.3.4-py2.py3-none-any.whl

Download URL pdmongo-0.3.4-py2.py3-none-any.whl
Size 6.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
fd9ed822e71839584810467a4c37b18087d0703ed566d734f9745be60e45cd20
BLAKE2b-256 checksum
How to use checksums
c07198e04941e02bd1af1a7b4cadefa60c3b1cb21fda3fcb0e88a4927d5e5472
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.5

Release history Release notifications | RSS feed

This release

0.3.4 This release

2 release files

0.2.3

2 release files

0.1.0

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page