pandasについてのメモ
- columnsの入れ替え
- データの書き出し
- apply すべてのデータに関数を適用
- loc
- iloc
- DataFrameのhistメソッドで各列の情報をヒストグラムとしてプロットする
- value_counts
- csvを読み込む。read_csv
- csvで保存する
- dataframeオブジェクトにデータを加える
- 参考文献
columnsの入れ替え
df[["D", "C","B","A"]]
データの書き出し
csv
df.to_csv() df.to_csv("test.csv",index=False) df2 = pd.read_csv("test.csv", index_col=0)
apply すべてのデータに関数を適用
>>> import pandas as pd >>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4}, ... {'a': 100, 'b': 200, 'c': 300, 'd': 400}, ... {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }] >>> df = pd.DataFrame(mydict) >>> df a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000
上記の元データに対して、applyを用いてすべてのデータに対して 指定した関数を適用する。
以下例
>>> df.apply(np.sqrt) a b c d 0 1.000000 1.414214 1.732051 2.000000 1 10.000000 14.142136 17.320508 20.000000 2 31.622777 44.721360 54.772256 63.245553 >>> df.apply(np.sum,axis=1) 0 10 1 1000 2 10000 dtype: int64
loc
pandasのDataframeの行の抽出する (indexが整数以外の時も使える)
>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], ... index=['cobra', 'viper', 'sidewinder'], ... columns=['max_speed', 'shield']) ... >>> df max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8 >>> df.loc["cobra"] max_speed 1 shield 2 Name: cobra, dtype: int64 >>> df.loc[["cobra", "viper"]] max_speed shield cobra 1 2 viper 4 5
iloc
pandasのdataframeの各行を取り出す時に用いる。
iはintengerのi。indexの行数を指定して取り出す
documentのサンプルを用いてサンプルコードを示す
>>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4}, {'a': 100, 'b': 200, 'c': 300, 'd': 400}, {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }] >>> df = pd.DataFrame(mydict) >>> df a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000 >>> df.iloc[1] # 二行目を取り出す a 100 b 200 c 300 d 400 >>> df.iloc[0,1] # 0行1列の要素を取り出す 2
DataFrameのhistメソッドで各列の情報をヒストグラムとしてプロットする
histメソッドで、各列のseriesのヒストグラムをプロットする。
これもirisのデータを用いてみる。
import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.datasets import load_iris iris = load_iris() data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target']) # ヒストグラムを表示する data1.hist(bins=20,figsize=(10,7))
value_counts
ユニークな値がどれくらい含まれているかを調べるためのメソッド
irisのデータを用いて試す。
各花のデータ数を見てみる。
import sklearn import pandas as pd import numpy as np from sklearn.datasets import load_iris # irisのデータの読み込みと、データのDataFrame化 iris = load_iris() data = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target']) # 各花がどれくらい含まれているかを出力 data["target"].value_counts() #=> 2.0 50 # 1.0 50 # 0.0 50 # Name: target, dtype: int64
csvを読み込む。read_csv
import pandas as pd data = pd.read_csv("test.csv")
csvで保存する
In [57]: data = pd.DataFrame({"A":[5.],"B":[6.]}) In [58]: data.to_csv("test.csv",index=None,header=True)
dataframeオブジェクトにデータを加える
In [44]: data1 = pd.DataFrame({"A":[1.],"B":[2.]}) In [45]: data1 Out[45]: A B 0 1.0 2.0 In [46]: data2 = pd.DataFrame({"A":[5.],"B":[6.]}) In [47]: data2 Out[47]: A B 0 5.0 6.0 In [48]: data3 = data1.append(data2) # 追加する In [49]: data3 Out[49]: A B 0 1.0 2.0 0 5.0 6.0