PandasでCSVファイルを読む
今回はPandasを使ってCSVファイルを読み取ってみるテスト。
列を指定して読むなどの細かいやり方はPandasの操作法の習得によるだろうから、今回は一切触れません。
前回
csvモジュールでcsvファイルを読む - よちよちpython
作業環境
目次
csvファイルをWebからダウンロード
前回と同じ人口統計のcsvファイルc01.csv
を使おうと思います。ダウンロードはPythonで行います。
下記のコードを実行すると、
import os import glob import urllib.request import ssl # 作業ディレクトリ取得 cwdir = os.getcwd() # 今からDLするファイルがローカルにあるかどうか確認 file_name = "c01.csv" check = glob.glob(file_name) # もしなければDLする if len(check) == 0: print("{}に{}は存在しません。\nダウンロードします。".format(cwdir,file_name)) try: # 認証回避 ssl._create_default_https_context = ssl._create_unverified_context # DL先のurlとファイル名を指定 url = "https://www.e-stat.go.jp/stat-search/file-download?statInfId=000031524010&fileKind=1" save_name = file_name # DLする urllib.request.urlretrieve(url,save_name) print("\nDLが完了しました。") except: print("DLできません。") else: print("既に{}は{}にDL済みです。".format(file_name,cwdir))
既にc01.csvは/storage/emulated/0/qpython/notebooksにDL済みです。
PandasでCSVファイルを読む
Pandasを使うのでPandasモジュールのインストールが必要です。
$ pip install pandas
・Anacondaをお使いの方
$ conda install pandas
・Android端末をお使いの方
・QpythonでのPandasのインストール
・Pydroid3でのPandasインストール
「アプリ起動」
→「左上の【三】」
→「メニューの【Pip】」
→「QUICK INSTALL」
→「pandas で【install】」
・termuxにPandasインストール
ちと手間が掛かります。
Pandasでcsvファイルを読むときに次のを使う
read_csv()
区切りがカンマread_table()
区切りがTab
で使い分けるそうだが、read_csvだけを試します。
非Windowsの場合はencoding="shift_jis"
を指定せずに実行するとエラーが出るかと思います。 というか出た。
import pandas as pd # 上でダウンロードしたファイル file_name = "c01.csv" # csvをPandasで読む df = pd.read_csv(file_name,encoding="shift_jis") # 読ませたものを出力 print(df)
都道府県コード 都道府県名 元号 和暦(年) \
0 00 全国 大正 9.0
1 01 北海道 大正 9.0
2 02 青森県 大正 9.0
3 03 岩手県 大正 9.0
4 04 宮城県 大正 9.0
.. ... ... ... ...
977 45 宮崎県 平成 27.0
978 46 鹿児島県 平成 27.0
979 47 沖縄県 平成 27.0
980 1) 沖縄県は調査されなかったため,含まれていない。 NaN NaN NaN
981 2) 長野県西筑摩群山口村と岐阜県中津川市の境界紛争地域人口(男39人,女34人)は全国に含... NaN NaN NaN
西暦(年) 注 人口(総数) 人口(男) 人口(女)
0 1920.0 NaN 55963053 28044185 27918868
1 1920.0 NaN 2359183 1244322 1114861
2 1920.0 NaN 756454 381293 375161
3 1920.0 NaN 845540 421069 424471
4 1920.0 NaN 961768 485309 476459
.. ... ... ... ... ...
977 2015.0 NaN 1104069 519242 584827
978 2015.0 NaN 1648177 773061 875116
979 2015.0 NaN 1433566 704619 728947
980 NaN NaN NaN NaN NaN
981 NaN NaN NaN NaN NaN
[982 rows x 9 columns]
全てを読み込んで全てを出力させると、行の最初と最後の4行ずつが出力され、中間は省略されている。
実行結果が如何にスマホで見難いかを示すw
↓ QPyNotebook横向き
↓ Pydroid3のJupyterNotebook横向き
↓ termux上のPythonで実行横向き
表示をスマホでやるもんじゃないっす。
↑
学習しない奴
- delimiter(区切り文字)はデフォルトでカンマ。
- headerを指定しなければ1行目がヘッダーとして読まれる
- indexを指定しなければ0番から自動で付く
列指定等の細かい表示指示、その他諸々
リンクで済ませる横着さ。
IO tools (text, CSV, HDF5, …) — pandas 0.25.1 documentation
PythonでCSVファイルを読み込み・書き込み(入力・出力) | note.nkmk.me
今回はこれにて。