猫になりたい

コンサルのデータ分析屋、計量経済とか機械学習をやっています。pyてょnは3.7を使ってマスコレルウィンストングリーン。

pythonでweb上のcsv、エクセルファイルをpandasに読み込む

2016/06/19 エクセルファイル(xls形式)について更新

Motivation

先日政府の統計データを使おうと思ってapiを使ってみたんですが使いづらい上に欲しいデータセットがなさそうだったので諦めました。代わりにcsvを直接読み込めればapiも何も無いだろうと思ったら上手く出来ました。以下そのやり方
(excelファイルは文字コードが不明で上手く行きませんでした) (リンク先がxlsの場合)上手く行きました。xlsxは試していないので上手く行くか判りません。

Example

csv

今回は例として
統計表一覧 政府統計の総合窓口 GL08020103

1 人口,人口増減,面積及び人口密度-全国※,全国市部※,全国郡部※,都道府県※,市部※,郡部※,市町村※・旧市町村
のcsvを読み込みたいと思います。 urlは
"http://www.e-stat.go.jp/SG1/estat/Csvdl.do?sinfid=000012460662"
です。これを以下の様にread_csv関数に突っ込めばdataframeとしてpandasに読み込めます。

import pandas as pd

url = "http://www.e-stat.go.jp/SG1/estat/Csvdl.do?sinfid=000012460662"

#csvを読み込む関数
def read_csv(url):
    print(url)
    res = urllib.request.urlopen(url)
    res=res.read().decode('shift-jis')
    df = pd.read_csv(StringIO( res) )
    return df

#実行
read_csv(url)

実行結果
f:id:shikiponn:20160619004604p:plain
やったぜ

Excelファイル(xls )

今度は
統計表一覧 政府統計の総合窓口 GL08020103
から人口・世帯を読み込んでみます。
上と同様にして

url = "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000003562952&releaseCount=1"

#xlsを読み込む関数
def read_xls(url):
    print(url)
    res = urllib.request.urlopen(url)
    f = pd.ExcelFile(res)
    df = f.parse()
    return df

#実行
read_xls(url)

実行結果
f:id:shikiponn:20160619190234p:plain
やったぜ