読者です 読者をやめる 読者になる 読者になる

Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

pandasの使い方(4)ファイルの読み込み

pandasを利用したファイルの読み込みについて。 
 
HTMLの表組み(TABLE)をDataFrameオブジェクトのリストで取得。 
Definition :  

read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, tupleize_cols=False, thousands=',', encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True)

 
○使用例1
ブログに百人一首のテストデータを用意しました。

# coding: utf-8

import pandas as pd

url = 'http://python-remrin.hatenadiary.jp/entry/2017/04/23/000000'
fetched = pd.io.html.read_html(url) # DataFrameのリスト
print(len(fetched))                 # 1   listの要素であるDataFrameが1個

d = fetched[0]                      # そのデータフレームをdに代入
l = list(d[1])                      # 1の列を抽出してリスト化
print(l[0])                         # あきのたの かりほのいほの ...
print(len(l))                       # 100...100首

string = "\n".join(l)               # 改行コードでつなぐ
with open("hyaku.txt", "w") as f:   # w:上書きモード
    f.write(string)                 # 書き込めるのは文字列型のみ

 
○使用例2
アンスコムの例

url = 'http://python-remrin.hatenadiary.jp/entry/2017/04/23/000000_1'
fetched = pd.io.html.read_html(url) # DataFrameのリスト
print(len(fetched))  # 1   listの要素であるDataFrameの個数

print(fetched[0])
df = fetched[0]

# 2次元リスト化
data = []
for i in range(len(df)):
    x = []
    for j in range(len(df.iloc[0])):
        x.append(df.iloc[i, j])
    data.append(x)
print(data)

# hatena表組み化
for i in range(len(df)):
    s = "|"
    for j in range(len(df.iloc[0])):
        s += str(df.iloc[i, j]) + "|"
    print(s)

 
csvファイルの読み込み
以下の内容のtest.csvを準備して

1,20
2,30
3,40
4,50

「20」の列だけを読み取る

import pandas
csv = pandas.read_csv('test.csv')
print(csv["20"])
# 0    30
# 1    40
# 2    50
# Name: 20, dtype: int64

 
詳しい使い方はもう少し調べてから。
 
参考:
HTML の表 (tableタグ) をスクレイピングする時も pandas が超便利
アンスコムの例 - Wikipedia