三村かな子をシンデレラガールにするためのデータ戦略（2.5）　ー全総選挙データの取り込みー

今回は番外編で、第1回から第7回までの総選挙の結果を同じフォーマットのCSVで保存していく。

第1回ではRequestsとbs4を使ってスクレイピングを行ったが、今回は数が多いのとそれぞれのページが微妙に細かく違うのでpandasのpandas.read_htmlメソッドを使って楽させていただいた。
今回は番外編ということで覚書としてコードだけです。
※5回、6回のインデックスの付け方に誤りがあったので修正しました。

#第1回
```python
import pandas as pd

elections = []

# 第1回
URL='https://dic.pixiv.net/a/%E7%AC%AC1%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E9%81%B8%E6%8A%9C%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL,header=0)
df = dfs[0].rename(columns={'順位':'rank'})
df[['name','votes']] = df['名前'].str.split('(',expand=True)
df['votes'] = df['votes'].str.extract('(.+)票')
df['votes'] = df['votes'].str.replace(',','')
df['rank'] = df['rank'].str.replace('位','')
df.set_index('name',inplace=True)
df = df[['rank','votes']]
# df.to_csv('data/election1.csv')

elections.append(df)

```

#第2回
```python
# 第2回
URL='https://dic.pixiv.net/a/%E7%AC%AC2%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E9%81%B8%E6%8A%9C%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL,header=0)
df = dfs[0].rename(columns={'順位':'rank'})
df[['name','votes']] = df['名前'].str.split('（',expand=True) #（は全角
df['votes'] = df['votes'].str.extract('(.+)票')
df['votes'] = df['votes'].str.replace(',','')
df['rank'] = df['rank'].str.replace('位','')
df.set_index('name',inplace=True)
df = df[['rank','votes']]
# df.to_csv('data/election2.csv')

elections.append(df)

```

#第3回
```python
# 第3回 ここだけなぜか1回と同じフォーマットのようだ
URL='https://dic.pixiv.net/a/%E7%AC%AC3%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL,header=0)
df = dfs[0].rename(columns={'順位':'rank'})
df[['name','votes']] = df['名前'].str.split('(',expand=True) #（は半角
df['votes'] = df['votes'].str.extract('(.+)票')
df['votes'] = df['votes'].str.replace(',','')
df['rank'] = df['rank'].str.replace('位','')
df.set_index('name',inplace=True)
df = df[['rank','votes']]
# df.to_csv('data/election3.csv')

elections.append(df)

```

#第4回
```python
# 第4回 pixivに票情報がないのでniconicoから抽出
URL='https://dic.nicovideo.jp/a/%E7%AC%AC4%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL)
df = dfs[9]
df = df.iloc[:,-3:]
df.columns=['rank','name','votes']
df.set_index('name',inplace=True)
df['votes'] = df['votes'].str.extract('(.+)票')
df['votes'] = df['votes'].str.replace(',','')
# df.to_csv('data/election4.csv')

elections.append(df)
```

#第5回
```python
# 第5回
URL='https://dic.pixiv.net/a/%E7%AC%AC5%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL,header=0)
col_names={'順位':'rank','得票数':'votes','名前':'name'}
df = dfs[0].rename(columns=col_names).set_index('name')
df['rank'] = df['rank'].str.replace('位','')
df = df[['rank','votes']]
# fifth_df.to_csv('data/election5.csv')

elections.append(df)
```

#第6回
```python
# 第6回
URL='https://dic.pixiv.net/a/%E7%AC%AC6%E5%9B%9E%E3%82%B7%E3%83%B3%E3%83%87%E3%83%AC%E3%83%A9%E3%82%AC%E3%83%BC%E3%83%AB%E7%B7%8F%E9%81%B8%E6%8C%99'
dfs = pd.read_html(URL,header=0)
col_names = {'Unnamed: 0':'rank','得票数':'votes','名前':'name'}
df = dfs[0].rename(columns=col_names).set_index('name')
df['rank'] = df['rank'].str.replace('位','')
df = df[['rank','votes']]
# df.to_csv('data/election6.csv')

elections.append(df)
```

#第7回
```python
# 第7回（第1回で作ったファイルを使用)
df = pd.read_csv('data/senkyo7.csv').rename(columns={'7th':'rank','votes':'votes'})
df = df.set_index('name')
df = df[['rank','votes']]

# seventh_df.to_csv('data/election7.csv')
elections.append(df)
```
#確認

```python
# 確認

for d in elections:
    print(d.head(3))
```
![範囲を選択_012.png](https://qiita-image-store.s3.amazonaws.com/0/209477/1191eebf-c66d-5d47-65f8-a7d451c03e0b.png)