【Python入門】pandasで「K」で始まる都市名と州名を抽出してCSVファイルに保存する方法
はじめに
データ分析の現場では、特定の条件に合致する行だけを抽出して、別のファイルとして保存したいケースがよくあります。本記事では、pandasのDataFrameから「K」で始まる都市名(City)と州名(State)を持つ行を抽出し、その結果を新しいCSVファイルに出力するPythonプログラムを解説します。
入力データのイメージ
ここでは、City 列と State 列を持つ以下のようなDataFrameを想定します。この中から都市名・州名の両方が「K」で始まるデータだけを取り出し、別のCSVファイルに保存します。
City,State Kochi,Kerala
解決手順
この問題は、以下の3つのステップで解決できます。
- DataFrameを定義する — 元となるデータを作成します。
- 条件でフィルタリングする —
str.startswith()を使って、都市名と州名がそれぞれ「K」で始まる行を抽出します。 - CSVファイルに保存する —
to_csv()メソッドで抽出結果を出力します。
フィルタリングのポイント
条件抽出には次のコードを使用します。& 演算子で2つの条件を組み合わせることで、「都市名と州名の両方が『K』で始まる」というAND条件を実現しています。
df[df['City'].str.startswith('K') & df['State'].str.startswith('K')]そして、抽出した結果は以下のようにしてCSVファイルに保存できます。
df1.to_csv('test.csv')サンプルコード(完全版)
実際の実装例を見てみましょう。理解を深めるために、全体のコードを確認してください。
import pandas as pd
import random as r
data = {
'City': ['Chennai', 'Kochi', 'Kolkata'],
'State': ['Tamilnad', 'Kerala', 'WestBengal']
}
df = pd.DataFrame(data)
print("DataFrame is\n", df)
# 「K」で始まる都市名・州名の両方を持つ行を抽出
df1 = df[df['City'].str.startswith('K') & df['State'].str.startswith('K')]
# 結果をCSVファイルに保存
df1.to_csv('test.csv')コードの解説
pd.DataFrame(data)— 辞書形式のデータからDataFrameを生成します。df['City'].str.startswith('K')— City列の各値が「K」で始まるかどうかを判定するブール値のSeriesを返します。&— 複数条件の論理積(AND)を表します。両方の条件がTrueの行のみが残ります。df1.to_csv('test.csv')— 抽出結果をカレントディレクトリのtest.csvとして書き出します。インデックスも出力されるため、不要な場合はindex=Falseを指定するとよいでしょう。
実行結果
上記のプログラムを実行すると、元のDataFrameには Chennai/Kochi/Kolkata の3件がありますが、条件(都市名・州名とも「K」で始まる)を満たすのは Kochi/Kerala の1件のみです。
City,State Kochi,Kerala
まとめ
pandasでは str.startswith() とブールインデックスを組み合わせることで、文字列の前方一致による簡単なフィルタリングが可能です。抽出結果は to_csv() 一行でCSVファイルとして保存できるため、条件付きデータのエクスポート処理を効率的に実装できます。大文字・小文字を区別せずに検索したい場合は、.str.lower().str.startswith('k') のように小文字化してから比較する方法も有効です。
-
PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】
pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-
-
【Pandas】CSVファイルの列名をインデックス番号で変更する方法
Pandasのcolumns.values()でCSVの列名を変更するPythonのデータ分析ライブラリ「Pandas」では、columns.values()を使うことで、CSVファイルの列名をインデックス番号で指定して簡単に変更できます。ここでは、Microsoft Excelで開いた次のようなCSVファイル(SalesData.csv)を例に、具体的な手順を解説します。元のCSVファイルには「Car」「Reg_Price」「Units」という3つの列があります。これらをそれぞれ新しい列名に変更していきましょう。手順1:CSVファイルをDataFrameに読み込むまず、read_csv()メ