Python 無料で独習 CSV・Excelファイルの読み込み・書き出し Pandas入門06

Python 無料で独習 CSV・Excelファイルの読み込み・書き出し Pandas入門06

今回の講義ではPandasでの
csvファイル、Excelファイル、
データベースからのデータの読み込み、書き出しの方法を学びます。
受講するにあたって、データをダウンロードしておく
必要があります。
下記URLからダウンロードできます。
1920年から2015年までの全国の人口推移のデータ

データはjupyternotebookと同じフォルダに保存します。

データの読み込みは以前の講義でやったことがありますので、
pandasをインポート
データの行数が多いので
表示する行を最大10行に指定、
実際にデータを読み込みます。

import pandas as pd
pd.set_option('display.max_rows',10)
df = pd.read_csv('c03.csv', encoding = 'shift-jis')
df
	都道府県コード	都道府県名	年齢5歳階級	元号	和暦(年)	西暦(年)	人口(総数)	人口(男)	人口(女)
0	01	北海道	総数	大正	9.0	1920.0	2359183.0	1244322.0	1114861.0
1	01	北海道	0〜4歳	大正	9.0	1920.0	376676.0	190044.0	186632.0
2	01	北海道	5〜9歳	大正	9.0	1920.0	319370.0	161814.0	157556.0
3	01	北海道	10〜14歳	大正	9.0	1920.0	270012.0	138018.0	131994.0
4	01	北海道	15〜19歳	大正	9.0	1920.0	239092.0	125670.0	113422.0
...	...	...	...	...	...	...	...	...	...
17663	47	沖縄県	70〜74歳	平成	27.0	2015.0	55820.0	26756.0	29064.0
17664	47	沖縄県	75〜79歳	平成	27.0	2015.0	56111.0	25504.0	30607.0
17665	47	沖縄県	80〜84歳	平成	27.0	2015.0	43199.0	18017.0	25182.0
17666	47	沖縄県	85歳以上	平成	27.0	2015.0	44133.0	12637.0	31496.0
17667	注)総数には年齢「不詳」を含む。	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
17668 rows × 9 columns

読み込み時にカラム名を追加

df = pd.read_csv('c01.csv', encoding = 'shift-jis', names = ['area_code','area','GG','gg','yyyy','chu','population','man','woman'])
df
	area_code	area	GG	gg	yyyy	chu	population	man	woman
0	都道府県コード	都道府県名	元号	和暦(年)	西暦(年)	注	人口(総数)	人口(男)	人口(女)
1	00	全国	大正	9	1920	NaN	55963053	28044185	27918868
2	01	北海道	大正	9	1920	NaN	2359183	1244322	1114861
3	02	青森県	大正	9	1920	NaN	756454	381293	375161
4	03	岩手県	大正	9	1920	NaN	845540	421069	424471
...	...	...	...	...	...	...	...	...	...
978	45	宮崎県	平成	27	2015	NaN	1104069	519242	584827
979	46	鹿児島県	平成	27	2015	NaN	1648177	773061	875116
980	47	沖縄県	平成	27	2015	NaN	1433566	704619	728947
981	1) 沖縄県は調査されなかったため,含まれていない。	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
982	2) 長野県西筑摩群山口村と岐阜県中津川市の境界紛争地域人口(男39人,女34人)は全国に含...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
983 rows × 9 columns

インデックスを指定して読み取る

df = pd.read_csv('c01.csv', encoding ='shift-jis', index_col=1)
df
	都道府県コード	元号	和暦(年)	西暦(年)	注	人口(総数)	人口(男)	人口(女)
都道府県名								
全国	00	大正	9.0	1920.0	NaN	55963053	28044185	27918868
北海道	01	大正	9.0	1920.0	NaN	2359183	1244322	1114861
青森県	02	大正	9.0	1920.0	NaN	756454	381293	375161
岩手県	03	大正	9.0	1920.0	NaN	845540	421069	424471
宮城県	04	大正	9.0	1920.0	NaN	961768	485309	476459
...	...	...	...	...	...	...	...	...
宮崎県	45	平成	27.0	2015.0	NaN	1104069	519242	584827
鹿児島県	46	平成	27.0	2015.0	NaN	1648177	773061	875116
沖縄県	47	平成	27.0	2015.0	NaN	1433566	704619	728947
NaN	1) 沖縄県は調査されなかったため,含まれていない。	NaN	NaN	NaN	NaN	NaN	NaN	NaN
NaN	2) 長野県西筑摩群山口村と岐阜県中津川市の境界紛争地域人口(男39人,女34人)は全国に含...	NaN	NaN	NaN	NaN	NaN	NaN	NaN
982 rows × 8 columns

indexが0,1,2,3,4,5,から都道府県名に変更されました。
もとのインデックスが0番目、都道府県が1番目になるので
index_col=1が都道府県の列になります。

複数のインデックスを指定して読み取る

df01 = pd.read_csv('c01.csv', encoding = 'shift-jis', index_col = [0, 1, 2, 3, 4])
df01.head()
				注	人口(総数)	人口(男)	人口(女)
都道府県コード	都道府県名	元号	和暦(年)	西暦(年)				
00	全国	大正	9.0	1920.0	NaN	55963053	28044185	27918868
01	北海道	大正	9.0	1920.0	NaN	2359183	1244322	1114861
02	青森県	大正	9.0	1920.0	NaN	756454	381293	375161
03	岩手県	大正	9.0	1920.0	NaN	845540	421069	424471
04	宮城県	大正	9.0	1920.0	NaN	961768	485309	476459

5列目までがindexに指定されました。
この画面ではわかりませんが、jupyternotebook上では
西暦までが太字で表現されています。

indexを一つ指定した時と複数指定した時の
データ型を調べます。
異なっているのがわかります。

type(df.index)
pandas.core.indexes.base.Index

type(df01.index)
pandas.core.indexes.multi.MultiIndex

csvファイルに書き出し

いままでデータを読み込むことは習っていましたが、
いがいと出力はやったことがありませんでした。
それほど難しくなく、シンプルなコードで出力が可能です。

df.to_csv('data_csv.csv', encoding ='shift-jis')

Excelファイル読み込み

read_csvとすごくにていて、
read_excelでエクセルデータを読み込めます。

pd.read_excel('data.xlsx')

読み込む際に、たとえば上2行を飛ばしたいときは

pd.read_excel(‘data01.xlsx’, skiprows = 2)

インデックスを指定してExcelファイル読み込み

csvファイル同様、indexを指定して読み込むこともできます。

pd.read_excel(‘data.xlsx’, index_col = ‘都道府県コード’)

DataFrameをエクセルに出力するときは下記となります。

df_excel.to_excel(‘df_excel.xlsx’)

データベース接続

データベースへの操作につきましては
以前に受講した今西先生の講義、
Python 無料で独習 027 Pythonでデータベースを扱ってみよう

Python 無料で独習 028 PythonでCRUD操作を行ってみよう

で内容が重複するので省きます。
エクセル、CSVを操作するイメージがだんだんわいてきました。
キノコード先生、有難うござます!

プログラミン独習カテゴリの最新記事