とらりもんHOME  Index  Search  Changes  Login

pandas

pandas

pythonのデータ処理用の高機能モジュール。

CSVファイルをデータフレームを読み込む:

普通にやるなら:
df = pd.read_csv("data.csv")
このとき, 最初の行が, 列の項目名になる。
最初の行(第0行)から第9行までをスキップ:
df = pd.read_csv("data.csv", skiprows=9)
特定の列を行のindexにする:
df = pd.read_csv("data.csv", index_col='#ymd')
その列を日付としてindexにする:
df = pd.read_csv("data.csv", index_col='#ymd', parse_dates='#ymd')

データフレームの特定の列だけを抽出:

df_new = df[['label1','label2']]    ... 2重の[[ ]]であることに注意!

データフレームの特定の行だけを抽出:

df[df.index.month>8]  ... (indexが年月日の場合)9月以降の行を抽出
df['2010-01-01':'2010-10-31']  ... (indexが年月日の場合)ある日付範囲だけを抽出

データフレームの特定の要素を抽出:

x=df.iloc[3,4]

データフレームの特定の要素に値を書き込む:

df.iloc[3,4]=2.718

日付を3日だけ増やす:

import datetime
date + datetime.timedelta(days=3)

データフレームのカラム名の付替え:

df.columns=['item1', 'item2']
あるいは, 
df_new=df.rename(columns={'label1':'LABEL1', 'label2':'LABEL2'})

データフレームの末尾に別のデータフレームを結合:

df_new=df1.append(df2)

データフレームに別のデータフレーム(シリーズ)を列として結合

df['column name']=df_other['column name']

データフレームの特定の行を3倍する:

df['label2']*=3

データフレームを列方向に演算

df.mean(axis=0)
df.var(axis=0)

データフレームを行方向に演算

df.mean(axis=1)
df.var(axis=1)
df.max(axis=1)

↑これらを応用してこんなの↓もできる:

df.mean(axis=1).max(axis=0)  ... 行方向に平均とったものの, 列方向の最大値

共通のインデックスを持つ2つのデータフレーム(シリーズ?)をくっつけて1つのデータフレームにする:

pd.concat([df1, df2], axis=1)

データフレームをCSV形式で標準出力:

df.to_csv(sys.stdout)     ... sys.stdoutをファイル名(''でくくる)にかえると, ファイルへの出力になる。

データフレームで、|YYYY | MM | DD| → |yyyy-mm-dd| (すなわち、YYYYとMMとDDをすべて同じ列にする)

pd.DataFrame({'yyyy-mm-dd':df[['YYYY','MM','DD'].apply(lambda x : '{}/{}/{}'.format(x[0],x[1],x[2]), axis=1)})

データフレームの特定の列のユニークな要素を取り出す

pd.Series(df['name'].values.reval()).unique()
Last modified:2019/09/30 08:50:39
Keyword(s):
References:[とらりもんHOME]