0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】CSVのデータや列名を、指定の値や言葉に一瞬で一括置換する方法

Posted at

概要

CSVファイルの特定の列のデータを置換&列名を変更して書き出すという処理が必要になったので、Pythonで実装しました。

少しならエクセルとかでパパッと置換作業してしまえば良いですが、たくさんあったり何回も実施する必要があるときは面倒ですよね。ということで以下のPythonコードで、指定のディレクトリにある指定のCSVファイルのデータを置換することができたので紹介します。

BEFORE

image.png

AFTER

image.png

サンプルコード

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として読み込む

まず、データ分析を行うライブラリpandasread_csv関数を使用して、指定したパスのCSVファイルを読み込み、それをpandasDataFrameにしています。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にして書き出すと以下のようになります。
インデックスが必要な際はこちらを指定すると良いですね。

image.png

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?