Skip to main content

Faster loading of pandas data frames by saving them as numpy arrays and pickling their meta info (row+column names, column dtype info).

Project description

numpickle

Faster loading of pandas data frames by saving them as numpy arrays and pickling their meta info (row+column names, column dtype info).

The bigger the data frame, the bigger the gain of speed when reading compared to loading a text file. (E.g., a several GB RAM-consuming matrix took minutes to read-in using normal pd.read_csv(), but took only seconds to load when using numpickle.load_numpickle()). all_numeric=True accelerates loading by ~ 7 times.

Also mentioned in my medium article.

Install

pip install numpickle

Usage

import pandas as pd
import numpickle as npl


# create example data frame with non-numeric and numeric columns
df = pd.DataFrame([[1, 2,'a'], [3, 4, 'b']])
df.columns = ["A", "B", "C"]
df.index = ["row1", "row2"]

df
#       A  B  C
# row1  1  2  a
# row2  3  4  b

df.dtypes
# A     int64
# B     int64
# C    object
# dtype: object




# save data frame as numpy array and pickle row and column names
# into helper pickle file "/home/user/test.npy.pckl"
npl.save_numpickle(df, "/home/user/test.npy")

# load the saved data
df_ = npl.load_numpickle("/home/user/test.npy")

df_
#       A  B  C
# row1  1  2  a
# row2  3  4  b


df_.dtypes
# A     int64
# B     int64
# C    object
# dtype: object

all(df == df_)
# True






####################################
# data frames with numeric-only values
###################################

# If you have a data frame with only numeric values, put all_numeric=True .
# Then dtypes is set to None and the loading will be slightly faster.
df = pd.DataFrame([[1, 2], [3, 4]])
df.columns = ["A", "B"]
df.index = ["row1", "row2"]

df
#       A  B
# row1  1  2
# row2  3  4

df.dtypes
# A     int64
# B     int64
# dtype: object

# save numeric-only data frame
npl.save_numpickle(df, "/home/user/test.npy", all_numeric=True)
# load numeric-only data frame (it recognizes automatically that it is numeric only
# because dtypes=None or not existent in pickle file
df_ = npl.load_numpickle("/home/user/test.npy")


###################################
# save a csv or tab file as numpickle file(s) and delete original files
###################################
npl.save_file_as_numpickle(fpath, sep="\t", ending=".tab", all_numeric=True, deletep=True)
# the data are read by pd.read_csv(), additional arguments for the reading process can be given
# into the argument list, they will be forwarded to pd.read_csv() by *args, **kwargs
# for the output file name, the `ending` is replaced by ".npy" and ".npy.pckl".
# So choose the separator and ending accordingly when file is a csv file (sep=",", ending=".csv").

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numpickle-0.1.3.post6.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

numpickle-0.1.3.post6-py3-none-any.whl (3.1 kB view details)

Uploaded Python 3

File details

Details for the file numpickle-0.1.3.post6.tar.gz.

File metadata

  • Download URL: numpickle-0.1.3.post6.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.6.8 Linux/5.4.0-81-generic

File hashes

Hashes for numpickle-0.1.3.post6.tar.gz
Algorithm Hash digest
SHA256 ba957135e3d4e13586fbf6760702a4a62fe4c314606ae5f13115bf5a85b47446
MD5 3c3eb4c53402963c22e87d32fb4aa8fd
BLAKE2b-256 268964ffb1b50a9df29efce48b41894d99f7627ebfe715d329d6ed2e2a147f93

See more details on using hashes here.

File details

Details for the file numpickle-0.1.3.post6-py3-none-any.whl.

File metadata

  • Download URL: numpickle-0.1.3.post6-py3-none-any.whl
  • Upload date:
  • Size: 3.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.6.8 Linux/5.4.0-81-generic

File hashes

Hashes for numpickle-0.1.3.post6-py3-none-any.whl
Algorithm Hash digest
SHA256 6b5e906a80a30e476745b93f3a9f3d4249f2d3a37c048ffea9b65893e86eaea7
MD5 f9413190e7be56892685b7ba12fd9397
BLAKE2b-256 1ce38fe164791e0d17d5562d6aad2ab2f7025fcdac7c1d9d6dae025d588b880b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page