質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

557閲覧

企業コードによる業種分類

ike-0315

総合スコア30

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/21 02:50

編集2018/12/21 06:25

証券コードを判定して、業種分類しようとしています。

1300番台 - 水産・農林業

1500番台 - 鉱業
1600番台 - 鉱業(石油・ガス開発)
1700~1900番台 - 建設業
2000番台 - 食料品
3000~3500番台 - 繊維製品
3700~3900番台 - パルプ・紙
4000番台 - 化学・医薬品
5000番台 - 石油・石炭製品
5100番台 - ゴム製品
5200~5300番台 - ガラス・土石製品
5400~5600番台 - 鉄鋼
5700~5800番台 - 非鉄金属
5900番台 - 金属製品
6000~6400番台 - 機械
6500~6900番台 - 電気機器
7000~7400番台 - 輸送用機器
7700番台 - 精密機器
7800~7900番台 - その他製品
8000~8200番台 - 卸売業
8300~8500番台 - 銀行・その他金融
8600番台 - 証券・先物取引業
8700番台 - 保険
8800番台 - 不動産
9000番台 - 陸運
9100番台 - 海運
9200番台 - 空運
9300番台 - 倉庫・運輸関連
9400番台 - 情報通信
9500番台 - 電気ガス
9600~9900番台 - サービス業

となっていて31種類あるのですが、全てif文で

if num.startswith("13")==True: print("水産・農林業")

などとして、分けると時間がかかる気がするのですが、他に効率的な方法はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ike-0315

2018/12/25 03:50

皆様回答ありがとうございました! 今回は、高評価の最も多かったのでhayatakaさんをベストアンサーとさせていただきます ご意見ありがとうございましたm(__)m
guest

回答3

0

ベストアンサー

最初の2文字を見れば確定するとして、dictにでもすればひたすらifでやるよりは理にかなっているでしょう。

python

1{"13":"水産・農林業", 2 "15":"鉱業", 3 "16":"鉱業(石油・ガス開発)", 4 "17":"建設業", 5 "18":"建設業", # これはこうするしかないと思う 6 "19":"建設業", 7 ... 8}

コードにべた書きするのはダサいのでJSONとして書いておいて、それを読み込むことにすれば、なんとなくそれっぽくなるかもしれません。

投稿2018/12/21 03:09

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://kabusapo.com/stock-data/stock-list/
に 上場銘柄の一覧CSV (「証券コード、銘柄名、優先市場名、業種分類、単元株数、日経225採用の有無)
がありました。

この csv を python で読み込んで 証券コード -> 業種 の dict を作れば良いと思います。

投稿2018/12/22 23:02

編集2018/12/23 22:08
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

素直に実装するなら関数化して、コードも数値で判断するようにすれば
速度もコードの見通しもそれほど悪くないかと思います。

Python

1def get_category(code): 2 code = int(code) // 100 # 上2桁を抽出 3 4 if code == 13: 5 return '水産・農林業' 6 elif code == 15: 7 return '鉱業' 8 elif code == 16: 9 return '鉱業(石油・ガス開発)' 10 elif code >= 17 and code <= 19: 11 #elif code in (17,18,19): # これでもよい 12 return '建設業' 13 # 略 14 return '?' 15 16for s in ['1311','1501','1602','1801']: 17 print( s, get_category(s))

投稿2018/12/21 03:23

can110

総合スコア38268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問