はじめに
Pandasを使えば、さまざまな形式のデータを簡単にインポートやエクスポートし、前処理や変換を行うことができます。この記事では、Pandasを使って様々なデータをインポート・エクスポートする方法を紹介します。
データファイルの読み込み
この章では、Pandasを使って様々なファイル形式からデータをインポートする方法を紹介します。
CSVファイルのインポート
CSV(カンマ区切り値)ファイルは、表形式のデータを保存・共有するために広く使われています。CSVファイルをインポートするには、Pandasのread_csv()
関数を使います。
import pandas as pd
data = pd.read_csv('file.csv')
区切り文字、エンコーディング、ヘッダ情報などの追加引数を指定することもできます。
data = pd.read_csv('file.tsv', delimiter='\t', encoding='utf-8', header=0)
Excelファイルのインポート
Excelファイルからデータをインポートするには、read_excel()
関数を使います。まず、openpyxl
パッケージをインストールする必要があります。
$ pip install openpyxl
その後、次のようにExcelファイルをインポートします。
data = pd.read_excel('file.xlsx', sheet_name='Sheet1')
JSONファイルのインポート
JSON(JavaScript Object Notation)は、人間が読み書きしやすく、機械が解析しやすい軽量データ交換形式です。JSONデータをインポートするには、read_json()
関数を使います。
data = pd.read_json('file.json')
URLや文字列からJSONデータをインポートすることもできます。
SQLデータのインポート
PandasはSQLite、MySQL、PostgreSQLなど、様々なSQLデータベースとやり取りできます。SQLデータベースからデータをインポートするには、適切なPythonライブラリを使ってデータベースに接続します。その後、read_sql()
関数を使って特定のテーブルやクエリからデータをインポートします。
import sqlite3
import pandas as pd
connection = sqlite3.connect('database.db')
data = pd.read_sql('SELECT * FROM table_name', connection)
処理が終わったら、接続を閉じることを忘れずに行ってください。
connection.close()
Web APIからのデータのインポート
Web APIを使えば、様々なオンラインソースからデータを取得できます。Web APIからデータをインポートするには、requests
ライブラリを使ってデータを取得し、それをPandasのDataFrameに変換します。
import requests
import pandas as pd
response = requests.get('https://api.example.com/data')
data = response.json()
df = pd.DataFrame(data)
その他のフォーマットからのデータのインポート
Pandasは、HTMLテーブル、Parquetファイル、HDF5ファイルなど、他のフォーマットからのデータのインポートにも関数を提供しています。例えば、HTMLテーブルからデータをインポートするには、read_html()
関数を使います。
data = pd.read_html('https://example.com/table.html')
詳細は、Pandasドキュメントを参照してください。
データファイルの書き出し
この章では、Pandas DataFrameをCSV、Excel、JSON、SQLデータベースなど、様々なファイル形式にエクスポートする方法を紹介します。
CSVファイルへのエクスポート
DataFrameをCSVファイルにエクスポートするには、to_csv()
メソッドを使います。
import pandas as pd
# Create a sample DataFrame
data = {'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
# Export DataFrame to a CSV file
df.to_csv('output.csv', index=False)
区切り文字、エンコーディング、インデックスの有無など、追加引数を指定することもできます。
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)
Excelファイルへのエクスポート
DataFrameをExcelファイルにエクスポートするには、to_excel()
メソッドを使います。まず、openpyxl
パッケージをインストールする必要があります。
$ pip install openpyxl
その後、次のようにDataFrameをExcelファイルにエクスポートします。
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
JSONファイルへのエクスポート
DataFrameをJSONファイルにエクスポートするには、to_json()
メソッドを使います。
df.to_json('output.json', orient='records')
orient
パラメータを使ってJSONの向きを指定することができます。利用可能なオプションは次のとおりです。
records
: DataFrameをJSONオブジェクトの配列としてエクスポートします。各オブジェクトはDataFrameの行を表します。index
: DataFrameをJSONオブジェクトとしてエクスポートします。キーはインデックスラベルであり、値は対応する行データが配列として表されます。columns
: DataFrameをJSONオブジェクトとしてエクスポートします。キーは列名であり、値は対応する列データが配列として表されます。values
:DataFrameをネストされた配列としてエクスポートします。各内部配列はDataFrameの行を表します。
orient='records'
# Create a sample DataFrame
data = {'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
# Export DataFrame as an array of JSON objects (records)
df.to_json('output_records.json', orient='records')
[
{ "Column1": 1, "Column2": "A" },
{ "Column1": 2, "Column2": "B" },
{ "Column1": 3, "Column2": "C" }
]
orient='index'
# Export DataFrame as a JSON object with index labels as keys (index)
df.to_json('output_index.json', orient='index')
{
"0": { "Column1": 1, "Column2": "A" },
"1": { "Column1": 2, "Column2": "B" },
"2": { "Column1": 3, "Column2": "C" }
}
orient='columns'
# Export DataFrame as a JSON object with column names as keys (columns)
df.to_json('output_columns.json', orient='columns')
{
"Column1": { "0": 1, "1": 2, "2": 3 },
"Column2": { "0": "A", "1": "B", "2": "C" }
}
orient='values'
# Export DataFrame as a nested array (values)
df.to_json('output_values.json', orient='values')
[
[1, "A"],
[2, "B"],
[3, "C"]
]
SQLデータベースへのエクスポート
DataFrameをSQLデータベースにエクスポートするには、適切なPythonライブラリを使ってデータベースへの接続を確立する必要があります。その後、to_sql()
メソッドを使用して、新しいテーブルを作成するか、既存のテーブルにデータを追加します。
import sqlite3
import pandas as pd
# Create a sample DataFrame
data = {'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
# Connect to the database
connection = sqlite3.connect('database.db')
# Export DataFrame to a new SQL table
df.to_sql('new_table', connection, if_exists='replace', index=False)
# Close the connection
connection.close()
その他のフォーマットへのエクスポート
pandasは、HTMLテーブル、Parquetファイル、HDF5ファイルなどの他のフォーマットにデータをエクスポートするためのメソッドも提供しています。例えば、データをHTMLテーブルにエクスポートするには、to_html()
メソッドを使用します。
df.to_html('output.html', index=False)