親です。

子ども産まれたんで育児とかについて書きます。映画とか心理学とかITとかの趣味についても書きます。

【Python】pandas - いろんな処理

おつです。かく。

いろんな処理

いろんな処理と書いたけど、扱うのは「読み込み書き出し」「追加」「絞り込み」「一括処理」の四つです。

データの読み込み・書き出し

・読み込み

df = pd.read_csv('dataset/check.csv', sep='\t', names=['Name', 'Height', 'Weight'])

これでCSVから読み込んでDataFrame型を作成できる。
ちな、 引数指定されてるsepCSVが何区切りかを示している。上の例はタブ区切り。指定がない場合はコンマ区切りと考えてくれる。(なおこの区切りのことを'デリミタ'と呼ぶらしい。初めて知った。)あと、namesCSVの見出しを指定している。
また、CSVだけじゃなくって、JSONとかExcelとかからも読み込めるから、便利。

・書き出し

df.to_csv('./pyq_out.csv', index=False)

DataFrame型をCSVに変換。第二引数のindexは行ラベルを書き込むかどうか。この世の全てのCSVから行ラベルがなくなることを望んでます。
to_jsonにすればjsonで出力できる。

データの追加

# 基本
df['追加したいカラム名'] = ['a', 'b', 'c']
# 既存カラム、計算式を含む追加
df['追加したいカラム名'] = df['既存のカラム名'] * 2

まあ基本。

データの絞り込み

# 基本
df_165 = df[df['Height'] >= 165]
# query()を使ったもの
df_165 = df.query('Height >= 165')

DataFrame型[条件式]って感じ。ここ結構はあ?ってなるけど頑張ろうね。
俺はquery()の方が好き。
あと、行に対する絞り込みみたいなのもあった気がするけど忘れた。

データの一括処理

・itertuples

for row in df.itertuples():
    sliced_list.append(row.Comment[:15])

for文でDataFrameを扱いたい時に使う。DataFrame型が行ごとに切り出されてきて、.カラム名でアクセスできる。
ちなitertuplesってクソ覚えにくいと思うが、iter, tuple,sにわけて覚えると良い。繰り返し(iterate)なタプル(tuple)の複数形(s)ってことだ。
ただ、基本的にfor文を使っちゃうと処理が遅くなるので、次のapply()を使うと良い。
・apply()

def text_ten(x):
    return x[:10]

df_tax = df['Text'].apply(text_ten)

DataFrame型の特定カラム全てに関数の処理を与えたい時、こうする。算術処理みたいな処理ならdf['Price'] * 1.08とかって書いてしまえばいいんだが、文字列の処理とかだとそうはできないので関数化する。そういう時に便利。

以上!!!