PythonでCSVファイルをプロットする ============================= 参考 --- [Pythonのmatplotlibとpandasを使ってCSVファイルをグラフ化しよう!](https://www.casleyconsulting.co.jp/blog/engineer/6168/) 作業記録 ---- 参考「[Pythonのmatplotlibとpandasを使ってCSVファイルをグラフ化しよう!](https://www.casleyconsulting.co.jp/blog/engineer/6168/)」の写経です。 ### 準備 ライブラリをインストールする ``` pip install pandas pip install matplotlib pip install jupyter ``` CSVデータサンプルを入手 21世紀出生児縦断調査(平成13年出生児) / 21世紀出生児縦断調査 / 第16回21世紀出生児縦断調査(平成29年) [第100表 父母の総収入額×成績.csv| e-Stat](https://www.e-stat.go.jp/stat-search/files?page=1&query=%E8%A6%AA%E3%81%AE%E5%8F%8E%E5%85%A5%20%E5%AD%90%E4%BE%9B%E3%80%80%E6%88%90%E7%B8%BE&layout=dataset&stat_infid=000031755569) {{:python:pasted:20220719-123647.png?300}} お手本のようにやるには、データの加工が必要でした。 文字コードを変換(Shift-JIS → UTF-8) ``` nkf -w t_100.csv > t_100_mod.csv ``` 不要部分の削除(LibreOfficeCalcを使いました) ``` libreoffice t_100_mod.csv ``` {{:python:pasted:20220719-125940.png}} ``` $ cat t_100_mod.csv ,"上の方","やや上の方","真ん中あたり","やや下の方","下の方","わからない" "200万円未満",127,229,334,266,217,29 "200〜400万円未満",318,536,808,598,465,41 "400〜600万円未満",695,1248,1536,1071,657,99 "600〜800万円未満",1006,1617,1714,1064,633,78 "800万円以上",2366,2966,2555,1434,783,126 "不詳",199,324,366,207,160,28 ``` ### 操作 ``` jupyter notebook ``` CSV読み込み {{:python:pasted:20220719-130151.png}} プロット {{:python:pasted:20220719-130647.png}} fontが無い的なワーニングがわんさか出るが、プロットできた。 日本語フォント設定しようとするが、写経通りにはいきませんね・・・ fm が未定義 fmとはなんぞや。 #### 日本語フォント設定 [ここ](https://qiita.com/nakamasato/items/50432a12fb9139b316bc)らを参考にした ``` $ sudo apt install -y fonts-ipafont $ vi ~/.config/matplotlib/matplotlibrc $ cat ~/.config/matplotlib/matplotlibrc font.family: IPAGothic $ ``` jupyter notebook を再起動して、 {{:python:pasted:20220719-144259.png}} 日本語表示できました。 おや、1列目の読み込み結果が、お手本と違うため、横軸の項目が期待通りになっていません。 CSVファイルが悪かった (1行目先頭の「,」) ``` $ cat t_100_mod1.csv "上の方","やや上の方","真ん中あたり","やや下の方","下の方","わからない" "200万円未満",127,229,334,266,217,29 "200〜400万円未満",318,536,808,598,465,41 "400〜600万円未満",695,1248,1536,1071,657,99 "600〜800万円未満",1006,1617,1714,1064,633,78 "800万円以上",2366,2966,2555,1434,783,126 "不詳",199,324,366,207,160,28 ``` {{:python:pasted:20220719-145710.png}} {{:python:pasted:20220719-150140.png}} {{:python:pasted:20220719-150713.png}} (とりあえず、この辺まで、円グラフ、難しそう……)