kaggleを始めてデータサイエンスに触れる機会が増えてきたため、pythonを使う私は必然的にpandasを用いてデータの処理をすることになりました。
今回は個人的によく使うコードをまとめています。ほぼ自分用のメモになりますが、誰かのお役に立つこともあるだろうかと思いqiitaにまとめて投稿することにしました。
他にもっと良い記法があるなど、何かしらのアドバイスや感想がございましたらコメントで教えていただけると幸いです。また、汎用的なコードはあれば随時更新していきたいと思います。
DataFrame
データの作り方。特にどれが良いということは無いですが、2通りで同じデータを作ります。自分がやりやすい方を場合によって使い分けてください。出力は同じです。
method 1
index = ['a','b','c']
columns = ['A','B','C']
inputs = [[1,2,1],[3,4,3],[5,6,5]]
df = pd.DataFrame(columns = columns,index = index)
for i,columns in enumerate(columns):
df[columns] = inputs[i]
df
A | B | C | |
---|---|---|---|
a | 1 | 3 | 5 |
b | 2 | 4 | 6 |
c | 1 | 3 | 5 |
method 2
index = ['a','b','c']
df = pd.DataFrame({
'A':[1,2,1],
'B':[3,4,3],
'C':[5,6,5]},
index=index)
df
A | B | C | |
---|---|---|---|
a | 1 | 3 | 5 |
b | 2 | 4 | 6 |
c | 1 | 3 | 5 |
今回はindexといして適当なアルファベット(a,b,c)を入れていますが、indexを指定しなければ0から数字を割り振ってくれます。
Feature Encoding
特徴量の変換に関していくつかまとめ。
One-Hot Encoding
データをいじっているとonehot vectorに変換したくなる場面は少なく無いと思います。sklearnのOne-Hot Encodingを用いることもできますが、pandasでデータを管理しているのであればget_dummesを使う方が効率がいいと思います。
pd.get_dummies(df['A'])
1 | 2 | |
---|---|---|
a | 1 | 0 |
b | 0 | 1 |
c | 1 | 0 |
Frequency Encoding
これは完全に個人的なコードです。また使うこともあるだろうと思ったのでメモしておきます。処理としては,値を出現回数のラベルに変換して返すというものです。
df.groupby('B')[['B']].transform('count')
B | |
---|---|
a | 2 |
b | 1 |
c | 2 |
Bのcolumnsで3が出現する回数が2回,4が出現する回数が1回ということですね。
まだ全然まとめ切れていないのですが、ひとまずこれにて。またコードを追加していこうと思います。