【ADRリストを作りたい】 ~三部作 最終話~ 見やすいADRリストの作成

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

<br>
そんな方でも大丈夫です！
最後まで読んでいただくと、**時価総額順**、**業種別**、**指定額範囲**で検索できる、ADR銘柄のリストの作り方がわかります。
最終話では楽天とSBIのADR一覧を結合して見易くしていきます。
<br>

<details>
<summary><strong>〜目次〜</strong></summary>
 [1. データフレームの結合と編集](#1-データフレームの結合と編集)
　 [1-1. 全業種を含むデータの結合](#1-1-全業種を含むデータの結合)
　 [1-2. 楽天の業種を選別](#1-2-楽天の業種を選別)
　 [1-3. sbiの事業内容を選別](#1-3-sbiの事業内容を選別)
[2. 検索](#2-検索)
　 [2-1. 不要なデータの削除](#2-1-不要なデータの削除)
　 [2-2. it関連の中から時価総額で検索](#2-2-it関連の中から時価総額で検索)
[3. 終わりに](#3-終わりに)
</details>


#1. データフレームの結合と編集
####1-1. 全業種を含むデータの結合
```python
# 楽天の抽出したADR＋SBIの抽出したADRをouter結合
SBI_RKT_ADR_df_out = pd.merge(moto_RKT_ADR_df, moto_SBI_ADR_df, on=["時価総額_ドル", "ADR_ティッカー"], how="outer")
SBI_RKT_ADR_df_out_fil = SBI_RKT_ADR_df_out.fillna("-")
SBI_RKT_ADR_df_out_fil_series = SBI_RKT_ADR_df_out_fil[["ADR_ティッカー", "時価総額_ドル", "業種", "事業内容"]].sort_values(by="時価総額_ドル")
```
outer結合することで、重複した要素を一つにします。
例えば、「1,2,3」+「3,4,5」=「1,2,3,4,5」といった感じです。

説明が長くなりますが、**業種は楽天**のデータ・**事業内容はSBI**のデータ。
楽天とSBIどちらでも取扱割れている銘柄は、業種列・事業内容列ともにデータがあります。
「NVS」は楽天で購入可能。「ASML」はSBIで購入可能。「MOGU」はどちらでも購入可能。
>`出力結果`
ADR_ティッカー	時価総額_ドル	業種：	事業内容
3	NVS	194267242000	医薬品：	`NO DATA`
229	MOGU	9500000	小売：	衣料品オンラインプラットフォームを運営している中国(ケイマン籍)の会社。
230	ASML	263548684000	`NO DATA`：	オランダの半導体製造装置メーカー

<br>
####1-2. 楽天の業種を選別
```python
# 必要のない業種は削除
SBI_RKT_ADR_df_out_fil_series_it = SBI_RKT_ADR_df_out_fil_series.query("業種 != ['その他', 'その他製造', '食品・飲料', '電機・電力・エネルギー', '金融（銀行）', '金融（その他）', '運輸', '航空機・宇宙', '自動車・自動車関連', '航空', '石油・ガス・パイプライン', '医薬品（バイオテクノロジー）', '医薬品', '医療・医療サービス', '化学', 'ホテル・モーテル', 'サービス', 'エンターテイメント・メディア', '小売', '鉄鋼・鉱業', '金融（保険）', '金融（証券）', 'トイレタリー・ヘルスケア', 'バイオ', 'コンピュータ関連', '半導体関連', '紙・パルプ']")
```
私が検索したかった業種は、IT関連の業種です。
ですので、関連しない業種は !=[ ] で非表示にします。
>`出力結果`
ADR_ティッカー	時価総額_ドル	業種	事業内容
251	JFU	16198000	NO DATA	ケイマン諸島籍のITソリューションを提供している企業
225	JRJC	30525000	ソフトウェア・ソフトウェアサービス	NO DATA
223	LIZI	37474000	ソフトウェア・ソフトウェアサービス	NO DATA
...	...	...	...	...
25	INFY	80685368000	ソフトウェア・ソフトウェアサービス	インドの大手ソフトウェア受託開発企業
18	CHL	112656107000	通信関連	香港の携帯電話サービス最大手
230	ASML	263548684000	NO DATA	オランダの半導体製造装置メーカー



####1-3. sbiの事業内容を選別
```python
# 事業内容列から欲しいワードの入っている行のみ残す
IT_job = SBI_RKT_ADR_df_out_fil_series_it[SBI_RKT_ADR_df_out_fil_series_it['事業内容'].str.contains('ソフトウェア|オンライン|インターネット|IT|通信|アプリ')]
IT_job2 = IT_job[['ADR_ティッカー', '事業内容']]

# 残したのを[ADR_ティッカー]列で結合
IT_job3 = pd.merge(SBI_RKT_ADR_df_out_fil_series_it, IT_job2, on=["ADR_ティッカー"], how="left")
```
検索したいのは、IT関連の「フトウェア|オンライン|インターネット|IT|通信|アプリ」のワードが含まれる事業内容です。
例えば「SFUN」の事業内容_Y列だと、検索したいワードが含まれていないのでNaNになっています。
>`出力結果`
ADR_ティッカー	時価総額_ドル	業種	事業内容_x	`事業内容_y`
6	SFUN	112565000	NO DATA	中国（ケイマン籍）の不動産情報サイト運営会社	`NaN`

<br>
##2. 検索
####2-1. 不要なデータの削除
```python
# 指定した列のどちらにも欠損値NaNがある行のみを削除する
SBI_RKT_ADR_df_out_fil_series_it2 = IT_job3[['ADR_ティッカー', '時価総額_ドル', '業種', '事業内容_y']].fillna("NO DATA")
SBI_RKT_ADR_df_out_fil_series_it3 = SBI_RKT_ADR_df_out_fil_series_it2[SBI_RKT_ADR_df_out_fil_series_it2[["ADR_ティッカー", "時価総額_ドル", "業種", "事業内容_y"]] != "NO DATA"]
SBI_RKT_ADR_df_out_fil_series_it4 = SBI_RKT_ADR_df_out_fil_series_it3.dropna(subset=["業種", "事業内容_y"], how='all')
```
楽天の業種、SBIの事業内容の**どちらともITとは無関係のデータ**を削除します。
ですので、どちらもNaNになっている行は表示されません。

>`出力結果`
ADR_ティッカー	時価総額_ドル	業種	事業内容_y
0	JFU	16198000	NaN	ケイマン諸島籍のITソリューションを提供している企業
1	JRJC	30525000	ソフトウェア・ソフトウェアサービス	NaN
2	WIMI	33200000	ソフトウェア・ソフトウェアサービス	NaN
3	LIZI	37474000	ソフトウェア・ソフトウェアサービス	NaN
4	BLCT	44096000	ソフトウェア・ソフトウェアサービス	NaN
...	...	...	...	...
83	BIDU	73737465000	ソフトウェア・ソフトウェアサービス	NaN
84	INFY	80685368000	ソフトウェア・ソフトウェアサービス	インドの大手ソフトウェア受託開発企業
85	CHL	112656107000	通信関連	NaN
86	SE	122856716000	ソフトウェア・ソフトウェアサービス	パソコンやモバイル機器向けのオンライン・デジタル・コン...
87	SAP	148332102000	ソフトウェア・ソフトウェアサービス	NaN
74 rows × 4 columns

<br>
####2-2. it関連の中から時価総額で検索
```python
# 時価総額を価格の範囲を指定して抽出
SBI_RKT_DF = SBI_RKT_ADR_df_out_fil_series_it4.query("40000000 <= 時価総額_ドル <= 150000000")
```
楽天とSBIからADR銘柄を取得し、IT関連で絞って、時価総額の範囲を指定して表示をすることができました。
>`出力結果`
ADR_ティッカー	時価総額_ドル	業種	事業内容_y
4	BLCT	44096000	ソフトウェア・ソフトウェアサービス	NaN
5	MFH	73412000	インターネットサービス	NaN
6	SFUN	112565000	NaN	NaN
7	LAIX	120566000	ソフトウェア・ソフトウェアサービス	中国(ケイマン籍)の人工知能(AI)関連テクノロジー企業。AI搭載のモバイルアプリケーション...
8	SY	129740000	ソフトウェア・ソフトウェアサービス	中国(ケイマン籍)の美容クリニックに関するオンラインサービス会社
9	DAO	145488000	ソフトウェア・ソフトウェアサービス	NaN

<br>
#3. 終わりに
最後まで読んで頂きありがとうございました。
このコードが、検索や比較の役に立てば幸いです。
まだまだ初学者ですので、もっと良い記述の方法があればご指摘お願い致します！