今回はPythonのPandasというライブラリでDataFrameを作成する方法とCSVからDataFrameに読み込む方法を解説していきたいと思います。
目次
DataFrame(データフレーム)とは
DataFrameとはPandasのライブラリが提供する、Excelやデータベースといった表形式のデータをプログラム上で操作することができるようなデータ構造のことです。
下の画像のようなものをオブジェクトとして持っていると思ってもらえればいったんOKです。
実際にプログラムで書いてみると意外と直感的に操作することができると思います。
DataFrameの作成
早速DataFrameを作成してみましょう。まずは下記のように書いてDataFrameを作成し中身を確認してみてください。
import pandas as pd
users = pd.DataFrame({
'name': ['Tanaka', 'Yamada', 'Suzuki', 'Sato'],
'sex': ['Male', 'Female', 'Female', 'Male'],
'age': [30, 18, 50, 40]
})
users
name | sex | age | |
---|---|---|---|
0 | Tanaka | Male | 30 |
1 | Yamada | Female | 18 |
2 | Suzuki | Female | 50 |
3 | Sato | Male | 40 |
- 1行目でPandasをインポートします。公式ではエイリアスをpdとすることが推奨されているようです。(別名でも問題はないです)
- 2行目でusersというDataFrameを作成しています。DataFrame関数の中にname, sex, ageのキーと値を持った辞書を入れています。
- 作成したDataFrameの中身を確認すると馴染みのある表形式のデータが確認できます。辞書のキーが列名になっていて、1列目がインデックス(行番号)となっています。
Seriesについて
PandasはDataFrameの他にSeriesというものがあり、これは1次元のベクトルのことを表しています。「え、難しそう」と思った方もいるかと思いますが、簡単です。先ほど作成したDataFrameの各列のことがSeriesとなっています。なので、DataFrameはある意味、Seriesの集合体だと思ってもらえればいいかと思います。
DataFrameからSeriesを選択するには下記のようにします。
users['name']
0 Tanaka
1 Yamada
2 Suzuki
3 Sato
Name: name, dtype: object
- usersのDataFrameに対して列名「name」を指定すると、nameのSeriesが取得できる
CSVファイルの読み込み
次はPandasでCSVを読み込む方法について解説していきます。
先ほどのusersテーブルのようなデータを準備しましたので、こちらからダウンロードしておいてください。
PandasでCSVのデータを読み込むにはread_csvという関数を使えば簡単に読み込むことができます。
users = pd.read_csv('users.csv')
users.head(5)
name | age | sex | birthday | |
---|---|---|---|---|
0 | 沖野 | 58 | 男 | 1962/6/13 |
1 | 木野 | 47 | 女 | 1973/2/27 |
2 | 柳瀬 | 52 | 男 | 1968/8/28 |
3 | 小野田 | 11 | 女 | 2009/6/17 |
4 | 小松 | 25 | 女 | 1995/6/14 |
- 今回のCSVデータは100行あるため、2行目でhead()関数を使い、上から5行目までを表示しています。
CSVの読み込みは結構簡単ですよね。ちなみにExcelからデータを読み込むのも簡単で下記のようにすればできます。
users = pd.read_excel('users.xlsx', sheet_name='users')
第一引数でファイル名を選択し、第二引数で読み込みたいシートを指定することで簡単に読み込めます。
その他のデータ読み込み方法
今回はCSVとExcelファイルの読み込み方法について解説しましたが、他にも様々なファイルの読み込みにPandasは対応しています。
Type | 説明 | 読み込み関数 | 書き込み関数 |
---|---|---|---|
text | CSV | read_csv | to_csv |
text | Fixed-Width File | read_fwf | |
text | JSON | read_json | to_json |
text | HTML | read_html | to_html |
text | クリップボード | read_clipboard | to_clipboard |
MS Excel | read_excel | to_excel | |
binary | OpenDocument | read_excel | |
binary | HDF5 Format | read_hdf | to_hdf |
binary | Feather Format | read_feather | to_feather |
binary | Parquet Format | read_parquet | to_parquet |
binary | ORC Format | read_orc | |
binary | Msgpack | read_msgpack | to_msgpack |
binary | Stata | read_stata | to_stata |
binary | SAS | read_sas | |
binary | SPSS | read_spss | |
binary | Python Pickle Format | read_pickle | to_pickle |
SQL | SQL | read_sql | to_sql |
SQL | Google BigQuery | read_gbq | to_gbq |
主要な読み込み形式については今後チートシートを作成しますのでお待ちください。
まとめ
- 辞書からDataFrameを作成することができる
- DataFrameの各列のことをSeriesという
- CSVファイルを読み込むにはread_csv関数を使う。Excelファイルの場合はread_excelを使う