8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python Pandas.read_csv 関連ノウハウ

Posted at

はじめに

pandas.read_csv に関して、高速化・日本語対応等に関するノウハウをまとめました。

圧縮CSVファイルの読み込み

compression="infer"  # デフォルト値
  • Pandas.read_csvは、gzip, zipなどで圧縮されたCSVファイルをOn-the-flyで解凍して読み込める。
  • デフォルトでは「compression="infer"」のため、read_csvは拡張子から圧縮方法を推定する。compressionを変更することで、拡張子によらない圧縮方法の指定が可能。
  • 冗長になりがちなCSVファイルは圧縮率が高いため、これを利用するとディスク領域の削減効果が高い。

日本語CSVファイルの読み込み

engine = "python"
  • デフォルトのparserエンジン"c"では日本語名ファイルの読み込みに失敗する。
  • parserエンジン"python"を指定すると、日本語ファイルの読み込みも可能になる。
  • ただし、parserエンジン"c"の方が高速。

複数カラムを日付カラムに変換

parse_dates = {"DATETIME":["DATE","TIME"]}
  • 日付カラム"DATE"と時刻カラム"TIME"を連結して"DATETIME"という新しい日時カラムを定義できる。

日付フォーマットを指定して高速化

to_datetime = lambda d: pd.to_datetime(d, format ="%Y/%m/%d %H:%M:%S")
...
date_parser = to_datetime

  
日付フォーマットは指定したほうが、read_csvの読み込みが高速化される。

Windows環境では文字コードは”CP932”

encoding = "cp932"
  • Windows環境のShift-JIS = Shift-JISを拡張したCP932 ≠ Pythonの Shift-JIS
  • そのため、文字コードとして”sjis”を使うならば”cp932"を指定したほうがトラブルが少ない。

pickleで入出力を高速化

df.to_pickle("D:¥¥Output.pkl")
  • pickle形式はCSV形式と比べ、型推定などを省略できるため、読み込みが高速。
  • そのため、前処理後のデータはCSV形式でなくPickle形式で保存したほうが良い。

サンプルコード

sample.py
import pandas as pd

# 日付フォーマットを指定して高速化
to_datetime = lambda d: pd.to_datetime(d, format ="%Y/%m/%d %H:%M:%S", errors="coerce")

df = pd.read_csv(
    "D:¥¥日本語.csv.gz",  # 圧縮CSVファイルの読み込み 
    parse_dates = {"DATETIME":["DATE","TIME"]}, # 複数カラムを日付カラムに変換
    date_parser = to_datetime, # 日付フォーマットを指定して高速化
    engine = "python", # 日本語CSVファイルの読み込み
    encoding = "cp932", # Windows環境では文字コードは”CP932”
)

# pickleで入出力を高速化
df.to_pickle("D:¥¥Output.pkl")
df2 = pd.read_pickle("D:¥¥Output.pkl")
8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?