ポートフォリオサイト公開中

【python】Dataframeの操作まとめ【行列の追加、削除、参照、ソート】

こんにちは、ともろう(@tomorrowSLog)です。

python, pandasのDataframe操作を全然覚えず、ググって調べることが多いので自分でまとめてみることにしました。

目次
  1. 行・列の追加
  2. 行・列の削除
  3. indexの再配置
  4. データ参照
  5. ソート
  6. フィルタリング

【pythonコードを読む】AV女優10000人webスクレイピング

Dataframeの作成

まずは基本のきDataframeの作成です。

お肉が食べたい気分だったので、中身はお肉にします🍖

Dataframeの作成
import pandas as pd
data = {"meat" : ["beef", "pork", "mutton", "chicken"], 
       "amount" : [2, 3, 1, 4], 
       "cuts" : ["Tongue", "Ham", "Lamb", "Breast"]} 
df = pd.DataFrame(data)

print(df)

>>
      meat  amount    cuts
0     beef       2  Tongue
1     pork       3     Ham
2   mutton       1    Lamb
3  chicken       4  Breast

ともろう

謎に英語の勉強が始まったなおい

行・列の追加

行の追加(df.append())

行の追加
data2 = pd.Series(["venison", 5, "neck"], index = ["meat", "amount", "cuts"])
df = df.append(data2, ignore_index=True)
print(df)

>>
      meat  amount    cuts
0     beef       2  Tongue
1     pork       3     Ham
2   mutton       1    Lamb
3  chicken       4  Breast
4  venison       5    neck

列の追加

列の追加
df["expiry"] = range(1, df.shape[0]*2, 2)
print(df)

>>
      meat  amount    cuts  expiry
0     beef       2  Tongue       1
1     pork       3     Ham       3
2   mutton       1    Lamb       5
3  chicken       4  Breast       7
4  venison       5    neck       9

列の追加は新しいカラム名と、indexに対応するリストを作成してあげれば大丈夫ですね。

行・列の削除

行の削除(df.drop())

行の削除
df["expiry"] = range(1, df.shape[0]*2, 2)
print(df)

>>
      meat  amount    cuts  expiry
0     beef       2  Tongue       1
1     pork       3     Ham       3
2   mutton       1    Lamb       5
3  chicken       4  Breast       7
4  venison       5    neck       9

列の削除(df.drop(,axis = 1))

列の削除
df = df.drop("cuts", axis = 1)
print(df)

>>
      meat  amount  expiry
0     beef       2       1
1     pork       3       3
4  venison       5       9

ともろう

axisどっちがどっちか忘れがちです

 

indexの再配置(df.index)

indexの再配置
df.index = range(1, df.shape[0]+1)
print(df)

>>
      meat  amount  expiry
1     beef       2       1
2     pork       3       3
3  venison       5       9

対応させたいindexのリストを渡してあげます。

なんやかんやよく使います

データ参照

Dataframeの作成
import pandas as pd
data = {"meat" : ["beef", "pork", "mutton", "chicken"], 
       "amount" : [2, 3, 1, 4], 
       "cuts" : ["Tongue", "Ham", "Lamb", "Breast"]} 
df = pd.DataFrame(data)

print(df)

>>
      meat  amount    cuts
0     beef       2  Tongue
1     pork       3     Ham
2   mutton       1    Lamb
3  chicken       4  Breast

名前で参照(df.loc)

名前で参照
print(df.loc[1])
print()
print(df.loc[1,"cuts"])

>>
meat      pork
amount       3
cuts       Ham
Name: 1, dtype: object

Ham
名前で参照
print(df.loc[[1, 2]])
print()
print(df.loc[range(0, 4, 2),["cuts", "meat"]])

>>
     meat  amount  cuts
1    pork       3   Ham
2  mutton       1  Lamb

     cuts    meat
0  Tongue    beef
2    Lamb  mutton

番号で参照(df.iloc)

番号で参照
print(df.iloc[1])
print()
print(df.iloc[1, 2])

>>
meat      pork
amount       3
cuts       Ham
Name: 1, dtype: object

Ham
番号で参照
print(df.iloc[[1, 2]])
print()
print(df.iloc[[0,2],[2, 1]])

>>
     meat  amount  cuts
1    pork       3   Ham
2  mutton       1  Lamb

     cuts  amount
0  Tongue       2
2    Lamb       1

ともろう

あまり使わないけど、ごっちゃになりやすいものの一つ

カラムをソート

カラムをソート(df.sort_values)
print(df.sort_values(by = "meat"))
print()
print(df.sort_values(by = "meat", ascending = False))

>>
      meat  amount    cuts
0     beef       2  Tongue
3  chicken       4  Breast
2   mutton       1    Lamb
1     pork       3     Ham

      meat  amount    cuts
1     pork       3     Ham
2   mutton       1    Lamb
3  chicken       4  Breast
0     beef       2  Tongue

ascendingをTrueにすることで昇順、Falseで降順になります。

フィルタリング

フィルタリング
print(df.index % 2 == 0)
print()
print(df[df.index % 2 == 0])

>>

[ True False  True False]

     meat  amount    cuts
0    beef       2  Tongue
2  mutton       1    Lamb

ともろう

フィルタリングはよく使いますね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です