pandasメモ
Kazuki Moriyama (森山 和樹)
データの読み込み
csvからの読み込み
headerなし
df_none = pd.read_csv('data/src/sample.csv', header=None)
print(df_none)
# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34
# header 指定
df_names = pd.read_csv('data/src/sample.csv', names=('A', 'B', 'C', 'D'))
print(df_names)
# A B C D
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34
pandasでcsv/tsvファイル読み込み(read_csv, read_table) | note.nkmk.me
sqliteからの読み込み
import sqlite3
from contextlib import closing
with closing(sqlite3.connect("database_path")) as conn:
df = pd.read_sql_query("query", conn)
データの取得
column名(header)の取得
df.columns
書き込み
sqliteへの書き込み
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html
pandas で sqlite3 の読み書き - Qiita
変換
data frame,seriesをlistに変換
df.values.tolist()
ser.values.tolist()
unix timeからdatetime
pd.to_datetimeを使う。
Unit引数でもとがどういう粒度のデータなのか指定する。
http://024minion.hatenablog.jp/entry/2017/12/29/021448
ローソク足チャートの作成
生データからの取得
pandas dataframeのresampleを使用する
https://note.nkmk.me/python-pandas-resampling-ohlc/
columnがMultiIndexになったときの再設定
Resample関数などを使用するとcolumnがネストしたMultiIndexになるときがある。
Df.columnsに再代入すればネストを削除できる。
aggdf: pd.DataFrame = dataframe.resample(agg_unit).agg({"value": "ohlc", "quantity": "sum", "ts": "size"}).fillna(0)
aggdf.columns = [I[1] for I in aggdf.columns]
時間ごとの集計
resample関数を作成する。
dataframeの各列へのresample
https://stackoverflow.com/a/42938645
seriesへのresample
https://financial-it-engineer.hatenablog.com/entry/20161116/1479283739
例外対応
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ‘RangeIndex’
- resample関数のときにでた
- dataframeのindexを DatetimeIndexに変更すれば解決した
- resampleは日付でしか集計できないっぽい
DataError: No numeric types to aggregate
- resample関数のときに出た
- 集計対象のデータをnumericにしたら解決
- 集計対象がobjectとかだと集計できない