今回の講義では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を操作するイメージがだんだんわいてきました。
キノコード先生、有難うござます!
コメント