Pandasまとめ
ファイルの読み込み
.py
import pandas as pd
df = pd.read_excel("data.xlsx")
カラム名を指定してインデックスに使用
.py
df = pd.read_excel("data.xlsx", index_col="ユーザID")
シート名を指定
.py
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
CSVやJSON等でも読み込める
.py
df = pd.read_csv("data.csv")
df = pd.read_json("data.json")
カラム名を取得
.py
df.columns
例:Index(['会社名', '商品名', '単価', '数量', '売上'], dtype='object')
行名を取得
.py
# 行名
df.index
例:RangeIndex(start=0, stop=10, step=1)
特定のカラムを取得する
.py
df["カラム名"]
データ型を取得する
.py
df.types
サイズを取得する
.py
df.shape
先頭の行を取得する
.py
df.head
ちなみに引数に数字を指定すると、その指定した数分取得することができる
.py
# 先頭から3行取得する
df.head(3)
末尾の行を取得する
.py
df.tail
# headと同じく引数を設定
df.tail(3)
loc
locを使用することで行や列を指定してデータを取得
することができる
基本形
.py
df.iloc[行番号, 列の名前]
行番号と列の名前を指定
.py
# 1列目と2列目の名前と年齢を取得する例
df.loc[[1, 2], ["名前", "年齢"]]
コロンを使用することで範囲指定も可能
以下は1行目から3行目と名前から年齢までを取得する例
.py
df.loc[1:3, "名前":"年齢"]
条件を指定
条件を再度、df
で囲む
.py
df[df["年齢"] > 30]
queryでも可能
.py
df.query('年齢 > 30')
かつ条件を指定
.py
df[(df["年齢"] > 30) & (df["名前"] == "高橋")]
queryでも可能
.py
df.query('年齢 > 30 & 名前 == "高橋"')
または条件を指定
.py
df[(df["年齢"] > 30) | (df["名前"] == "高橋")]
## ユニークな値を取得
```.py
df['名前'].unique()
重複削除
全て一致の場合は引数が必要ないが、そうでない場合はセットする
.py
df.drop_duplicates(subset='名前')
全ての行や列を取得
.py
df.loc[:, :]
iloc
ilocを使用することで行や列をインデックスで指定してデータを取得することができる
基本形
.py
df.iloc[要素番号(インデックス), 要素番号(インデックス)]
行と列を取得
値の指定がややこしい。。。
.py
# 5行目から10行目と2列目から5列目まで取得
data_frame.iloc[[4:10], [2, 6]]
統計量を調べる
numberic_only=Trueを指定することで数値のみの列を取得することができる
.py
data_frame.mean()
data_frame.median()
data_frame.max()
data_frame.min()
data_frame.sum()
列単位で演算・加工
.py
data_frame["年齢"] + 10
data_frame["年齢"] * data_frame["値"]
data_frame["新しい列"] = data_frame["年齢"] + 10
data_frame["新しい列"] = data_frame["名前"] + "さん"
pd.DataFrame([1, 2, 3, 4, 5], columns=["col1", "col2", "col3", "col4", "col5"], index=["a", "b", "c", "d", "e"])
まとめ
以上がpandasを使った基本的な操作になります!
ただ、自分は複雑な操作をしたことがないので、「これも便利だよ〜」とかあればぜひ教えていただけると嬉しいです🙌