とらりもん - pandas Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
!pandas
pythonのデータ処理用の高機能モジュール。
CSVファイルをデータフレームを読み込む:
普通にやるなら:
df = pd.read_csv("data.csv")
このとき, 最初の行が, 列の項目名になる。
最初の1〜9行を行(第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()
pythonのデータ処理用の高機能モジュール。
CSVファイルをデータフレームを読み込む:
普通にやるなら:
df = pd.read_csv("data.csv")
このとき, 最初の行が, 列の項目名になる。
最初の
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()