目次
今回やりたいこと
2つのCSVファイルを連結し、条件で抽出し、その結果をExcelファイルに出力します。
検証データ
ユーザーデータ(users.csv)
id | name | dept |
---|---|---|
1001 | alice | 01 |
1002 | bob | 01 |
1003 | Carol | 02 |
1004 | dave | 02 |
1005 | eve | 02 |
1006 | frank | 03 |
部署データ(depts.csv)
dept_id | dept_name |
---|---|
01 | 商品開発 |
02 | システム開発 |
03 | 商品販売 |
プラグラムの流れ
1.csvを読み込む
- csvの読み込みにはpandasというライブラリを利用する
- pandasではDataFrame(データフレーム)というオブジェクトを扱う
import pandas as pd
# ユーザーデータの読み込み<br>users = pd.read_csv('data/users.csv', na_filter=False)
# 部署データの読み込み<br>depts = pd.read_csv('data/depts.csv', na_filter=False)
2.データを結合
- left_on と right_on で結合に使うフィールドを指定できる
- how を指定することで結像方法を指定できる(デフォルトでは’inner’)
# usersとdeptをマージ
merge_data = pd.merge(users, depts, left_on='dept', right_on='dept_id')
3.条件で絞り込む
# 開発関係の部門を抽出
developers = marge_data.query('service.str.contains("開発")')
4.Excelに出力
# Excelに出力
developers.to_excel('D:/developers.xlsx', index=None)
最終的に
import pandas as pd
# ユーザーデータの読み込み
users = pd.read_csv('data/users.csv', encoding="shift-jis")
# 部署データの読み込み
depts = pd.read_csv('data/depts.csv', encoding="shift-jis")
# usersとdeptをマージ
merge_data = pd.merge(users, depts, left_on='dept', right_on='dept_id')
# 開発関係の部門を抽出
developers = merge_data.query('service.str.contains("開発")')
# Excelに出力
developers.to_excel('D:/developers.xlsx', index=None)
Excel出力結果
まとめ
わずか6行でcsvファイルの結合&エクスポートができました。
単純なことしかしていませんが、これだけでも可能性に溢れていると思います。
例えば
- 標準入力を利用して様々なファイルに対応する
- for文を使ってグループごとにそれぞれExcelを出力する
- for文でカウンタつけて集計
とか
まだまだできることがたくさんありそう。