概要
CSVファイルの特定の列のデータを置換&列名を変更して書き出すという処理が必要になったので、Pythonで実装しました。
少しならエクセルとかでパパッと置換作業してしまえば良いですが、たくさんあったり何回も実施する必要があるときは面倒ですよね。ということで以下のPythonコードで、指定のディレクトリにある指定のCSVファイルのデータを置換することができたので紹介します。
BEFORE
AFTER
サンプルコード
import pandas as pd
import os
filtered_csv_dir = './'
filtered_csv_filename = 'sample_csv.csv'
filtered_csv_path = os.path.join(filtered_csv_dir, filtered_csv_filename)
# CSVファイルの読み込み
df = pd.read_csv(filtered_csv_path)
# name列のデータを置換
fruit_name_mapping = {
1: "バナナ",
2: "りんご",
3: "レモン",
4: "もも",
5: "オレンジ",
6: "マンゴー"
}
df['name'] = df['name'].map(fruit_name_mapping)
# color列のデータを置換
color_mapping = {
1: "黄色",
2: "赤色",
3: "ピンク色",
4: "オレンジ色"
}
df['color'] = df['color'].map(color_mapping)
# 列名を変更
df.rename(columns={
'name': 'フルーツ名',
'color': '色',
'quantity': '数量'
}, inplace=True)
# 結果を同じCSVファイルに書き出し
df.to_csv(filtered_csv_path, index=False)
サンプルコード解説
1. read_csv
関数を使用してDataFrame
として読み込む
まず、データ分析を行うライブラリpandas
のread_csv
関数を使用して、指定したパスのCSVファイルを読み込み、それをpandas
のDataFrame
にしています。DataFrame
とは、pandas
で扱うデータ構造です。
Pandas DataFrame とは、表形式のデータを表示、操作する方法の一つです。二次元のデータ構造で、データを行と列に整理してテーブルとして表示します。DataFrame は、ゼロから作成することも、NumPy 配列のような他のデータ構造を利用することも可能です。
引用元:pandas DataFrame - Databricks
2. map
関数と辞書を利用してマッピングを作成する
その後、特定の数値をフルーツの名前や色(置換したい言葉)にマッピングするため、辞書を作成。
そしてdf['name'].map(fruit_name_mapping)
とdf['color'].map(color_mapping)
を使用して、'name'
列と'color'
列の数値をそれぞれ対応するフルーツの名前や色に置換します。ここで使われたmap
関数とは、各要素に対して辞書に基づいて値を変換したりできる関数。辞書のキーが列の元の値と一致し、そのキーに対応する辞書の値が新しい値となります。
つまり、上記の例で言えば、'name'
列の1
がバナナ
に置換される、ということです。
3. rename
メソッドで列名を変更する
列名の変更については、df.rename
を使用します。これはDataFrame
の行名や列名を変更するために使用されるメソッドです。ここでも置換したい言葉を辞書型で指定してあげます。
ここのinplace=True
とは、新しいDataFrame
を返さずに元のDataFrame
を直接変更することを意味しています。つまり、CSVファイルの列名を直接置換したい場合は、ここでTrue
を指定してあげないといけません。
4. to_csv
メソッドでCSVファイルに書き出す
最後に、df.to_csv
を使用して、変更を加えたDataFrame
を同じCSVファイルに書き出します。ちなみに、index=False
は、DataFrame
のインデックスをCSVファイルに書き出さないことを指定しています。
index=True
にして書き出すと以下のようになります。
インデックスが必要な際はこちらを指定すると良いですね。