はじめに
こんにちは!タランチュラと申します。
本記事では、Pythonを使ってCSV・Excel・XML・JSONなど、さまざまなファイルを効率よく読み込む方法をまとめて紹介します。ファイルごとに読み込み方法を調べるのは意外と手間に感じることが多いですよね。
特に初学者の方や、多種多様なデータを日常的に扱う方にとって、アクセスしやすい形で情報を整理しておくことはとても重要だと思います。
僕自身、「結局、Excelを読み込む場合はどうするんだっけ?」と毎回検索し直すことが多くありました。そこで、初心者でも理解しやすく、実用的な形でまとめようと考えたのがこの記事を書く動機です。
Xで、統計や機械学習について発信しているので、こちらもぜひフォローお願いします。
また、まだβ版ではありますが「DSの森」というデータ型職種特化型の求人広告サイトの運営も始めたので、求人を載せたい企業様、データ系職種の求人に応募したい方、お気軽にご連絡ください!
それでは、さまざまなファイルの読み込み方をまとめていきます。
さまざまなデータの種類
この章では、データ分析でよく使われる代表的なファイル形式であるCSV, Excel, XML, JSONファイルについて、簡単にどんな特徴があるのか、どんな場面で利用されることが多いかをまとめます。
1. csvファイル
まず、csvファイルは、「カンマ」などの区切り文字によってデータを行と列の形式で表したテキスト形式のファイルです。
拡張子は「.csv」が使われますが、同様の構造をもつタブ区切りの「.tsv」なども存在します。
シンプルで軽量なため、多種多様なシステム間で連携する際に最もよく利用される形式と言えるでしょう。たとえば、大量のログデータをまとめてエクスポートしたり、他の人や他のシステムに数値データを渡す際には、CSVファイルが選ばれることが多いです。
2. Excelファイル
次に、Excelファイルは、Microsoft Excelという表計算ソフトで作成・編集されるファイル形式で、「.xlsx」「.xls」などの拡張子をもつものが知られています。
数式を使った表計算やグラフの作成など、高機能な表現が可能であり、ビジネスの現場で標準的なツールとして広く活用されるファイル形式です。
帳票の作成やレポートの提出、複数シートを使ったデータ管理など、さまざまな業務シーンに対応できるため、多くの企業がExcelを通じてデータをやり取りしています。
複数シートを管理できる点がcsvファイルとは大きく異なりますね。
3. XMLファイル
一方、XMLファイルは、拡張子が「.xml」で、タグによって階層的にデータを表現するマークアップ言語の一つです。
階層構造で書かれているため、人が直接読もうとすると少々冗長に感じられるかもしれませんが、機械的にデータを解析・抽出する場合には都合が良い形式です。
これまでWebサービスやさまざまなシステムで標準的なデータ交換フォーマットとして使われてきた歴史もあり、設定ファイルや通信フォーマットとして、現在でも多くの場面で目にする形式のひとつです。
最近僕もXMLファイルに触れる機会が多いです。
4. JSONファイル
そして、JSONファイルは、「JavaScript Object Notation」の略称で、拡張子としては「.json」が使われます。JavaScriptで生まれた形式ですが、今ではPythonやJavaなど、さまざまな言語から扱いやすい汎用的なデータ交換フォーマットとなりました。
シンプルなキーと値の組み合わせでデータを記述し、ツリー構造で表現できるため、可読性が高く、サイズも比較的コンパクトです。特にWeb APIの通信形式として広く普及しており、近年の開発現場ではXMLに代わってJSONを利用するケースが増えています。
以上のように、どのファイル形式も異なる特徴や利用シーンを持ちますが、Pythonであれば各ファイルを簡単に読み込むライブラリや便利な関数が用意されています。
データサイエンティストであれば、どのファイルも即座に扱えるようになりたいですね。
次章では、具体的にどのようにコーディングすればよいのかを、例を挙げながら解説していきます。
Pythonによる各データの読み込み方
ここからは、Pythonを使って実際にCSV・Excel・XML・JSONファイルを読み込む方法を紹介していきます。
ポイントとしては、標準ライブラリだけで実現できるものと、外部ライブラリ(ここでは主にPandas)を利用する場合の両方を知っておくと便利です。慣れてくると、Pandasを使うほうが圧倒的にラクな場面が多いと思いますので、積極的に活用してみてください。
1. CSVファイルの読み込み
標準ライブラリ(csvモジュール)を使う方法
Pythonの標準ライブラリであるcsvモジュールを使うと、行単位でデータを取得できるようになります。単純な処理や、カスタマイズが必要な場合に便利です。
import csv
# CSVファイルを読み込み、1行ずつ表示する例
with open('sample.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
上記の例では、csv.reader
を使って行ごとのリストを取得し、コンソールへ出力しています。区切り文字を指定したい場合は、delimiter=','
などのオプション引数を追加することで対応できます。
Pandasを使う方法
大規模なデータや、行列形式のまま一気に操作したい場合は、Pandasのread_csv
関数を利用するのが圧倒的に便利です。
import pandas as pd
# Pandasを使ってCSVファイルをDataFrameに読み込む
df = pd.read_csv('sample.csv')
df.head() # 先頭5行を表示
Pandasを使うと、読み込んだデータをそのまま統計処理や可視化、その他のデータ加工に移行できるため、データ分析や機械学習の実践で頻繁に利用されます。
こちらは暗記している方も多いのではないでしょうか?
2. Excelファイルの読み込み
ExcelはCSVファイルと形式が似ていますが、読み込み方はやや異なります。
Pandasのread_excelを使う方法
ExcelファイルをPythonで扱うとき、最も簡単なのはPandasのread_excelを使う方法です。必要に応じてsheet_nameを指定すると、特定のシートを読み込むこともできます。
import pandas as pd
# ExcelファイルをDataFrameに読み込む
df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')
df.head()
この例では、sample.xlsx
のSheet1
シートを読み込み、先頭の5行を表示しています。シート名を指定しなければ、デフォルトのシート(最初のシート)が読み込まれます。
openpyxlやxlrdなどのライブラリ
3. XMLファイルの読み込み
標準ライブラリ(xml.etree.ElementTree)を使う方法
XMLは階層構造をもつため、ElementTreeを使って木構造として処理するのが一般的です。
import xml.etree.ElementTree as ET
# XMLファイルをパースして要素を取得する例
tree = ET.parse('sample.xml')
root = tree.getroot()
# ルート要素のタグ名や属性を表示
print(root.tag, root.attrib)
# 子要素にアクセスする例
for child in root:
print(child.tag, child.attrib)
# 子要素のテキストにアクセスする場合
# print(child.text)
このように、階層構造をもつXMLをタグごとに取得しながら、任意の要素やテキストを参照します。大量のXMLデータや複雑な入れ子構造の場合でも、ElementTreeを使えば比較的シンプルに処理を組み立てられます。
4. JSONファイルの読み込み
標準ライブラリ(jsonモジュール)を使う方法
JSONは、Web APIなどの通信形式として非常によく使われるフォーマットです。Pythonの標準ライブラリであるjson
モジュールを使うと、辞書型(dict
)やリスト型(list
)として簡単にデータを取得できます。
import json
# JSONファイルを読み込み、Pythonのオブジェクトに変換する例
with open('sample.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# dataはPythonのdictやlistに変換されている
print(data)
print(type(data))
JSONファイルをそのまま扱うため、データの追加や変更も簡単に行えます。また、JSONデータを文字列として保存したい場合は、json.dumps
を使うとJSON形式の文字列を得ることができます。
Pandasを使う方法
JSON形式のデータがテーブル状に変換可能な場合は、Pandasのread_json
を使うことで、直接DataFrameに読み込むこともできます。ただし、JSONが複雑な入れ子構造になっている場合は、思った通りのテーブル形式にならないことがあるので注意が必要です。
import pandas as pd
df = pd.read_json('sample.json')
df.head()
以上が、Pythonを使った各種データファイルの読み込み方法の概要です。各モジュールの使い方やPandasがいかに強力なモジュールかわかっていただけたと思います!
おわりに
最後まで読んでいただき、ありがとうございます。
本記事では、CSV・Excel・XML・JSONといった主要なファイル形式をPythonで読み込む方法を、サンプルコードとあわせて紹介しました。これらのファイル形式は、さまざまな業務や学習の場面で日常的に登場するため、少しでも皆さんがデータを扱う際の手助けになれれば幸いです。
もしこの記事が少しでもお役に立てたと感じたら、ぜひ「いいね」や「ストック」をしてもらえるととても嬉しいです。今後もデータサイエンスに関する情報を発信していきますので、引き続きよろしくお願いいたします。
ご興味ある方はこちらのXアカウントのフォローもよろしくお願いいたします。
また、データ系職種求人広告サイト「DSの森」にご興味ある方も是非ご連絡お待ちしております!