実体と情報のはざま

のんびりデータサイエンスでもやりますか

Pythonでエクセルから読み込み

 前回は初めてPythonを使ってみて、なんとかグラフを描いてみた。
 今回はエクセルからデータを読み出してグラフ化することにトライしてみる。私が好きな総務省統計局の「日本の統計」や「世界の統計」といった資料はエクセル形式であるため、読み込み方はぜひとも習得したい!まずは必要なライブラリをimportせねば。

読み込みには「xlrd」を使う。
 手持ちの本にはCSVとかTEXTファイルの読み込み方は書いてあるけど、エクセルは書いてない。ネットで検索したらエキスパートの方々が忘備録を残してくれている!感謝です。
 いくつかやり方はあるが、今回は「xlrd」というライブラリを使うことにした。これは読み込み専用。書き込み専用が「xlwt」らしい。

パスの入力で問題発生!手動で解消。。
 まずは、読み込むエクセルを用意してと。お試しなので自作した。曜日とその文字数を書いた。センス良い?日本語を使わなかったのは、手持ちの本に文字化けすると書いてあったから。いつか日本語フォントを入れないとだめだわ。
f:id:myuteru:20170510211205p:plain
 では、これを読み込もう。
まずはxlrdをインポートしてと。anacondaに同梱されている。
次に、このエクセルファイルのパスを入力してオープンにする。

import xlrd
wb = xlrd.open_workbook('C:/Users/M/Desktop/test.xlsx')

しかーし。さらっと、上記プログラムには到達できなかった。理由は、ファイルパスのコピペ。
ファイルのプロパティを開きセキュリティータブのオブジェクト名部分からファイルパスをクリップボードにコピー。
コピーしたパスは 'C:¥Users¥M¥Desktop¥test.xlsx' だった。
一方、Spyderでは 'C:\Users\M\Desktop\test.xlsx' となってしまった。。コピペしただけで。
(*実際の”¥”と”\”は半角。ブログ中でも表示できない。。)
コピペしただけでなんで~!これ本当に解決に時間がかかった。Pythonとは関係ないHPでこの手のことが書いてあって解決できた。
解決策は、反対向きの"/"を自分で打ち込みなおすこと。それで上記プログラムを得たわけ。苦労した。
さて、いよいよ読み込みとグラフ化。完成したプログラムはこんな感じ。まだPythonはじめて3日目なんでぎこちないですが。

import matplotlib.pyplot as plt
import xlrd
wb = xlrd.open_workbook('C:/Users/M/Desktop/test.xlsx')
#ファイルパスをコピペ後に"\"を"/"に手動で変えないとダメ!
ws= wb.sheet_by_name('Sheet1')
data_X=[]
data_Y=[]
label=[]
for j in range(0,ws.nrows):
    y=ws.cell(j,1).value
    data_X.append(j)
    data_Y.append(y)
    label.append(ws.cell(j,0).value)
plt.figure(figsize=(8,5))
plt.bar(data_X,data_Y, tick_label=label, align="center")
plt.show()

この結果は、こうなりました。
f:id:myuteru:20170510224730p:plain
グラフの色とかきれいにしたかったな~。今回は時間切れかな。

今日はここまで!