【ADRリストを作りたい】 ~三部作 第二話~ 楽天&SBIのADR銘柄一覧の取得

- [x] 忙しくてADR銘柄を比較してる時間がない,,
- [x] リストがあれば、すぐ選べるのに,,
- [x] 資金少ないし、失敗したくないなぁ,,

<br>
そんな方でも大丈夫です！
三部作のゴールは、**時価総額順**、**業種別**、**指定額範囲**で検索できる、ADR銘柄のリストの作り方がわかります。
第二話では早速ADRを取得していきます。
<br>

<details>
<summary><strong>〜目次〜</strong></summary>
 [1. 楽天証券から一覧を取得](#1-楽天証券から一覧を取得)
　 [1-1. adr銘柄のcsvを取得から編集](#1-1-adr銘柄のcsvを取得から編集)
　 [1-2. 重複する要素の抽出](#1-2-重複する要素の抽出)
[2. sbi証券から一覧を取得](#2-sbi証券から一覧を取得)
　 [2-1. adr銘柄のhtmlテーブルを取得から編集](#2-1-adr銘柄のhtmlテーブルを取得から編集)
　 [2-2. 重複する要素の抽出](#2-2-重複する要素の抽出)
[3. 終わりに](#3-終わりに)
</details>


#1. 楽天証券から一覧を取得
楽天とSBIとでは、取扱っているADR銘柄が違います。
ですので先に、楽天で取扱のあるADRから取得していきましょう。
####1-1. adr銘柄のcsvを取得から編集
```python
# 楽天証券取扱のADR
dfrkt = pd.read_csv("/Users/nak@@@@@@oshinari/Downloads/result_us.csv")
RKT_ADR_df = dfrkt.rename(columns={"現地コード": "ADR_ティッカー"})
```
取得してきたデータに「現地コード」という列名があるはずですので、「ADR_ティッカー」に変更します。
第一話で作成した「ADR_ティッカー」と、列名を合わせる事で重複要素として結合できるようになります。
もちろん列名は「ADR_ティッカー」以外で、ご自身の分かり易いもので結構です。
>`出力結果`
ADR_ティッカー	銘柄名(English)	銘柄名	市場	業種	取扱
0	ABB	ABB LTD-ADR	ＡＢＢ	NYSE	電機・電力・エネルギー	○
1	ABCM	ABCAM PLC	アブカム	NASDAQ	医薬品（バイオテクノロジー）	○
...	...	...	...	...	...	...
242	ZEPP	ZEPP HEALTH CORPORATION	ゼップ・ヘルス	NYSE	コンピュータ関連	○
243	ZTO	ZTO EXPRESS (CAYMAN) INC.	ZTOエクスプレス（ケイマン）	NYSE	運輸	○
244 rows × 6 columns

<br>
####1-2. 重複する要素の抽出
```python
# 米国株約6800から楽天ADR銘柄を抽出して、列に追加する
moto_RKT_ADR_df = pd.merge(moto_df, RKT_ADR_df, on="ADR_ティッカー", how="inner")

# .sort_values(by="順に並べたい列名")
moto_RKT_ADR_df_pic = moto_RKT_ADR_df[["ADR_ティッカー", "時価総額_ドル", "業種"]].sort_values(by="業種")
```
楽天のADR一覧には時価総額や取引値が記載されていません。
なのでYahooFinanceのデータフレームと結合させて時価総額や取引値を見れるようにします。

>`出力結果`
ADR_ティッカー	時価総額_ドル	取引値	業種
129	SBS	4941776000	7.23(04/01 16:15)	その他
166	PLL	1070827000	68.10(04/01 17:20)	その他
...	...	...	...	...
107	KOF	9789903000	46.60(04/01 16:15)	食品・飲料
52	ABEV	42023780000	2.67(04/01 16:15)	食品・飲料

<br>
#2. sbi証券から一覧を取得
楽天ではCSVでしたが、SBIではhtmlからデータを取得していきます。
####2-1. adr銘柄のhtmlテーブルを取得から編集
```python
# SBI証券取扱のADR
tables = pd.read_html("https://search.sbisec.co.jp/v2/popwin/info/stock/pop6040_usequity_list.html#usetf", flavor='bs4')

tables6 = tables[6]
tables7 = tables[7]
tables8 = tables[8]
tables9 = tables[9]
tables10 = tables[10]
tables11 = tables[11]
tables12 = tables[12]
tables13 = tables[13]
tables14 = tables[14]
tables15 = tables[15]
tables16 = tables[16]
tables17 = tables[17]
tables18 = tables[18]
tables19 = tables[19]

tablesdf = pd.concat([tables6, tables7, tables8, tables9, tables10, tables11, tables12, tables13, tables14, tables15, tables16, tables17, tables18, tables19])
SBI_ADR_df = tablesdf.rename(columns={"ティッカー": "ADR_ティッカー"})
```
取得してきたデータに「ティッカー」という列名があるはずですので「ADR_ティッカー」に変更します。
これも重複要素を結合する為です。
>`出力結果`
ADR_ティッカー	銘柄（英語）	事業内容	市場
0	AMRN	Amarin Corporation plcアマリン	アイルランド籍のバイオ製薬会社	NASDAQ
1	AUTL	Autolus Therapeutics plcアウトロス セラピューティクス	イギリスのバイオ医薬品会社	NASDAQ
...	...	...	...	...
14	SAP	SAP SEエス・エー・ピー	e-ビジネスおよび企業経営ソフトウエアなどビジネスソフトウエアの開発ＳＡＰ（SAP SE）を...	NYSE
15	SQM	Sociedad Quimica y Minera de Chile SAソシエダード キミ...	世界100カ国以上で商品を販売しているチリの大手化学メーカー。	NYSE
166 rows × 4 columns
<br>

####2-2. 重複する要素の抽出
```python
# 米国株約6500からSBIのADR銘柄を抽出して時価総額_ドルの列を追加する
moto_SBI_ADR_df = pd.merge(moto_df, SBI_ADR_df, on="ADR_ティッカー", how="inner")
moto_SBI_ADR_df_pic = moto_SBI_ADR_df[["ADR_ティッカー", "時価総額_ドル", "事業内容"]]

# sortするとタイプがなくなるのか下のmergeでエラーが出る
moto_SBI_ADR_df_pic_sort = moto_SBI_ADR_df_pic.sort_values(by="時価総額_ドル")
```
SBI証券のADR一覧にも時価総額や取引値が記載されていません。
楽天と同様YahooFinanceのデータフレームと結合させて、時価総額や取引値を見れるようにします。
>`出力結果`
ADR_ティッカー	時価総額_ドル	取引値	事業内容
161	MOGU	9500000	2.00(04/01 16:15)	衣料品オンラインプラットフォームを運営している中国(ケイマン籍)の会社。
160	JFU	16198000	1.82(04/01 17:20)	ケイマン諸島籍のITソリューションを提供している企業
...	...	...	...	...
1	TSM	596761765000	115.07(03/30 20:04)	台湾の半導体メーカー
0	BABA	608576500000	224.36(04/01 16:15)	中国（ケイマン籍）で電子商取引、オンライン金融およびインターネットコンテンツサービスを提供す...

<br>
#3. 終わりに
次回、[最終話](https://qiita.com/seaoto/items/1f59025519396d865db3)では楽天とSBIのADR一覧を結合していきます。
最後まで読んで頂きありがとうございました。
まだまだ初学者ですので、もっと良い記述の方法があればご指摘お願い致します！