2018年1月27日土曜日

[Python] Jupyter Note Book で CSVファイル をグラフ描画

Jupyter Note Bookを使って,CSVファイルの読み込み,グラフ作成をやってみた際のメモです.

CSV形式では,1行1レコードで記述されています.1レコードはカンマで区切られて,複数のフィールドを持つことができます.以下のようなCSVファイル(都道府県別の人口一覧データ)があるとします.

prefectures,2000,2005,2010,2015,2016
Tokyo,12064,12577,13159,13515,13624
Kanagawa,8490,8792,9048,9126,9145
Osaka,8805,8817,8865,8839,8833
Aichi,7043,7255,7411,7483,7507
Saitama,6938,7054,7195,7267,7289
Chiba,5926,6056,6216,6223,6236
Hyogo,5551,5591,5588,5535,5520
Hokkaido,5683,5628,5506,5382,5352
Fukuoka,5016,5050,5072,5102,5104
Shizuoka,3767,3792,3765,3700,3688
Ibaraki,2986,2975,2970,2917,2905
Hiroshima,2879,2877,2861,2844,2837
Kyoto,2644,2648,2636,2610,2605
Miyagi,2365,2360,2348,2334,2330
Nigata,2476,2431,2374,2304,2286
Nagano,2215,2196,2152,2099,2088
Gifu,2108,2107,2081,2032,2022
Gunma,2025,2024,2008,1973,1967
Tochigi,2005,2017,2008,1974,1966
Okayama,1951,1957,1945,1922,1915
Fukushima,2127,2091,2029,1914,1901
Mie,1857,1867,1855,1816,1808
Kumamoto,1859,1842,1817,1786,1774
Kagoshima,1786,1753,1706,1648,1637
Okinawa,1318,1362,1393,1434,1439
Shiga,1343,1380,1411,1413,1413
Yamaguchi,1528,1493,1451,1405,1394
Ehime,1493,1468,1431,1385,1375
Nagasaki,1517,1479,1427,1377,1367
Nara,1443,1421,1401,1364,1356
Aomori,1476,1437,1373,1308,1293
Iwate,1416,1385,1330,1280,1268
Ohita,1221,1210,1197,1166,1160
Ishikawa,1181,1174,1170,1154,1151
Yamagata,1244,1216,1169,1124,1113
Miyagi,1170,1153,1135,1104,1096
Toyama,1121,1112,1093,1066,1061
Akita,1189,1146,1086,1023,1010
Kagawa,1023,1012,996,976,972
Wakayama,1070,1036,1002,964,954
Yamanashi,888,885,863,835,830
Saga,877,866,850,833,828
Fukui,829,822,806,787,782
Tokushima,824,810,785,756,750
Kochi,814,796,764,728,721
Shimane,762,742,717,694,690
Tottori,613,607,589,573,570


このCSVファイル(SampleData.csv)を,Jupyter Note Bookで読み込んでみます.
まず,読み込むCSVファイルをJupyterを起動するディレクトリにコピーします.

Jupyter Note Bookを起動して,画面右上の"New"ボタンから"Python3"を選んでクリックします.

以下の二行のプログラムを入力します.

    import pandas as pd
    pd.read_csv("SampleData.csv", encoding="UTF-8")


CSVデータ(SampleData.csv)が表示されています.
SampleData.csvは,人口の多い都道府県順に並んでいます.このデータを2016年度の人口データを元にして,人口の少ない順に並び替え(ソート)を行ってみます.

    import pandas as pd
    df = pd.read_csv("population.csv", encoding="SHIFT_JIS")
    df.sort_values(by=["平成28年"], ascending=True)


Pythonでは,上記のように非常に簡潔に記述できます.
なお,
    ascending=True
の部分を
    ascending=False
と書き換えると、人口の多い順(つまり、降順)に並び替えられます.



続いて,CSVファイルをもとに,棒グラフを描画(2016年をY軸にして棒グラフを描画)してみます.

    %matplotlib inline
    import pandas as pd
    df = pd.read_csv("SampleData.csv", encoding="UTF-8")
    df.plot.bar(y=['2016'])


Jupyter Note Book でグラフ描画するときは
    %matplotlib inline
という一行を記述する必要があります.
また,棒グラフを書くためには plot.barメソッド を呼びだします.
さらに,複数列を持つCSVデータの場合は,どの列をY軸にするかを指定します.
すれば良い。
2つの列を並べたグラフにしたい場合は,以下のようにします(例は2000年,2016年).色分けも自動です.

0 件のコメント :

コメントを投稿