こんにちは、ともろう(@tomorrowSLog)です。
python, pandasのDataframe操作を全然覚えず、ググって調べることが多いので自分でまとめてみることにしました。
目次
- 行・列の追加
- 行・列の削除
- indexの再配置
- データ参照
- ソート
- フィルタリング

Dataframeの作成
まずは基本のきDataframeの作成です。
お肉が食べたい気分だったので、中身はお肉にします🍖
Dataframeの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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())
行の追加
1 2 3 4 5 6 7 8 9 10 11 |
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 |
列の追加
列の追加
1 2 3 4 5 6 7 8 9 10 |
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())
行の削除
1 2 3 4 5 6 7 8 9 10 |
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))
列の削除
1 2 3 4 5 6 7 8 |
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の再配置
1 2 3 4 5 6 7 8 |
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の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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)
名前で参照
1 2 3 4 5 6 7 8 9 10 11 |
print(df.loc[1]) print() print(df.loc[1,"cuts"]) >> meat pork amount 3 cuts Ham Name: 1, dtype: object Ham |
名前で参照
1 2 3 4 5 6 7 8 9 10 11 12 |
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)
番号で参照
1 2 3 4 5 6 7 8 9 10 11 |
print(df.iloc[1]) print() print(df.iloc[1, 2]) >> meat pork amount 3 cuts Ham Name: 1, dtype: object Ham |
番号で参照
1 2 3 4 5 6 7 8 9 10 11 12 |
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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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で降順になります。
フィルタリング
フィルタリング
1 2 3 4 5 6 7 8 9 10 11 |
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 |
ともろう
フィルタリングはよく使いますね。
コメントを残す