はじめに:データはプログラムの「外」にある!
Pythonプログラミングを学ぶと、次に挑戦したくなるのが「外部データとの連携」です。Webからダウンロードしたデータ、同僚から受け取ったExcelファイル、自分でメモしたテキストファイルなど、私たちの周りには様々な形式のデータがあふれています。
これらのファイルをPythonで自由に読み書きできれば、単なる計算機だったプログラムが、強力なデータ処理ツールへと進化します。
この記事では、Pythonを使ったファイル操作の基本から、データ分析の現場で必須となるCSV、Excel、そしてWebでよく使われるJSONまで、主要なファイル形式の扱い方を1つにまとめて徹底解説します。このガイドを読めば、あなたもPythonでデータを自由自在に操れるようになります!
1. すべての基本:テキストファイル (.txt) の読み書き
まずは、あらゆるファイル操作の基礎となるテキストファイルの扱いです。
【最重要】with open() で安全にファイルを開く
ファイルを操作する基本は open()
関数ですが、必ず with
ステートメントと組み合わせて使います。これにより、ファイルの閉じ忘れを防ぎ、安全にリソースを管理できます。
# with open('ファイル名', 'モード', encoding='utf-8') as f: # # ファイルに対する処理
- モード:
'r'
(読み込み),'w'
(上書き書き込み),'a'
(追記) が基本です。 encoding='utf-8'
: 日本語などの非英語文字を扱う際の文字化けを防ぐため、必ず指定しましょう。
書き込み ('w') と追記 ('a')
# 'w'モード:ファイルがなければ新規作成、あれば中身を消して上書き with open('python_guide.txt', 'w', encoding='utf-8') as f: f.write("Pythonファイル操作ガイドへようこそ!\n") f.write("これは1行目のテキストです。\n") # 'a'モード:ファイルがあれば末尾に追記 with open('python_guide.txt', 'a', encoding='utf-8') as f: f.write("この行は追記されました。\n") print("python_guide.txt に書き込みと追記を行いました。")
読み込み ('r')
ファイルの内容を読み込むには、for
ループを使うのが最もシンプルで効率的です。
print("\n--- python_guide.txt の内容 ---") with open('python_guide.txt', 'r', encoding='utf-8') as f: for line in f: print(line.strip()) # .strip()で余分な改行を除去
2. 表形式データの定番:CSVファイル
CSV (Comma Separated Values) は、データをカンマで区切ったシンプルなテキスト形式で、Excelなどの表計算ソフトと親和性が高いのが特徴です。
pandasライブラリを使う方法(強く推奨)
データ分析を行うなら、pandas
を使うのが最も簡単で強力です。
# pandasが未インストールの場合 pip install pandas
CSVへの書き込み (to_csv)
import pandas as pd # 書き込むデータ(DataFrame)を作成 df_to_save = pd.DataFrame({ '商品ID': ['P001', 'P002', 'P003'], '商品名': ['りんご', 'バナナ', 'みかん'], '価格': [150, 80, 120] }) # CSVファイルに保存 # index=False: DataFrameのインデックス(行番号)を保存しない # encoding='utf-8-sig': Excelで開いた際の文字化け対策 df_to_save.to_csv('products.csv', index=False, encoding='utf-8-sig') print("\nproducts.csv を作成しました。")
CSVからの読み込み (read_csv)
# CSVファイルをDataFrameとして読み込み df_loaded = pd.read_csv('products.csv') print("\n--- products.csv から読み込んだデータ ---") print(df_loaded)
3. ビジネスの必須スキル:Excelファイル (.xlsx)
ビジネスシーンではExcelが広く使われています。pandas
を使えば、ExcelファイルもCSVと同じくらい簡単に扱えます。
# Excel操作に必要なライブラリをインストール pip install openpyxl
Excelへの書き込み (to_excel)
import pandas as pd # 分析結果のDataFrameを作成 df_report = pd.DataFrame({ '支店': ['東', '西', '南', '北'], '平均売上': [2500, 3200, 1800, 2100], '顧客数': [120, 155, 98, 110] }) # Excelファイルに書き込み df_report.to_excel('sales_report.xlsx', sheet_name='月次報告', index=False) print("\nsales_report.xlsx を作成しました。")
複数のシートに書き込む
pd.ExcelWriter
を使うと、1つのExcelファイルに複数のシートを作成できます。
with pd.ExcelWriter('sales_report_detailed.xlsx') as writer: df_report.to_excel(writer, sheet_name='サマリー', index=False) df_to_save.to_excel(writer, sheet_name='商品マスタ', index=False) print("\n複数のシートを持つ sales_report_detailed.xlsx を作成しました。")
Excelからの読み込み (read_excel)
# Excelファイルの 'サマリー' シートを読み込み df_excel_summary = pd.read_excel('sales_report_detailed.xlsx', sheet_name='サマリー') print("\n--- sales_report_detailed.xlsx の 'サマリー' シート ---") print(df_excel_summary)
4. Web APIとの連携に:JSONファイル
JSON (JavaScript Object Notation) は、Web APIや設定ファイルで広く使われる、階層構造を持つことができるデータ形式です。Pythonの辞書やリストと非常によく似ています。
JSONへの書き込み (json.dump)
Pythonの標準ライブラリ json
を使います。
import json # 書き込むデータ(辞書) user_profile = { "id": 101, "name": "Taro Yamada", "email": "taro@example.com", "subscribed": True, "interests": ["Programming", "Data Science", "AI"] } # JSONファイルに書き込み # indent=4: 人が読みやすいようにインデントを付ける # ensure_ascii=False: 日本語をそのまま保存する with open('user_profile.json', 'w', encoding='utf-8') as f: json.dump(user_profile, f, indent=4, ensure_ascii=False) print("\nuser_profile.json を作成しました。")
JSONからの読み込み (json.load)
# JSONファイルを読み込んでPythonの辞書に変換 with open('user_profile.json', 'r', encoding='utf-8') as f: loaded_profile = json.load(f) print("\n--- user_profile.json から読み込んだデータ ---") print(loaded_profile) print(f"ユーザー名: {loaded_profile['name']}")
まとめ:適切なフォーマットでデータを操ろう!
今回解説した4つのファイル形式は、Pythonでデータを扱う上で非常に重要です。
- テキストファイル: シンプルなメモやログに。
- CSV: 表形式のデータ交換、大量のレコードの保存に。
- Excel: ビジネスレポートの作成、Excelユーザーとのデータ共有に。
- JSON: Web APIとの通信、複雑な設定情報の保存に。
これらのファイル操作をマスターすることで、あなたのPythonプログラムは外部の世界とつながり、その可能性は無限に広がります。ぜひ、実際にコードを書いて、それぞれのファイル形式の便利さを体感してみてください!
コメント