乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

データサイエンス


はい
またまた 数字のトリビアをPythonで検証してみました。

解説動画はこちら




最初のトリビアは
数字のトリビア.007

割るときれいな数字がでる組み合わせです。

コードは
print(1/81)
print(1/891)
print(1/8991)
print(1/89991)
print(1/8181)
print(1/818181)

0.012345679012345678
0.001122334455667789
0.00011122233344455567
1.1112222333344445e-05
0.0001222344456667889
1.2222234444456666e-06

以外ときれいに並びますねー
Pythonのデフォルトでは桁数がそんなに多く出せ無いので
こんな感じになってしまいます。


次は
数字のトリビア.008

またまた割り算のトリビアですが
これはデフォルトでは桁が足り無いので
正確な小数点の計算をするためのライブラリを用います。

decimal

コードは
import decimal

decimal.getcontext().prec = 1000
a = decimal.Decimal(10000)
b = decimal.Decimal(9801)
print(a / b)
結果は・・・
1.02030405060708091011121314151617181920
2122232425262728293031323334353637383940
4142434445464748495051525354555657585960
6162636465666768697071727374757677787980
818283848586878889909192939495969799000
・・・
1から一つづつ数字が増えていく結果になります。

おしい
97までは並んだのに

というかこれを発見した人
絶対ヒマ人でしょ

こんな計算
いつやるの?


・・
・・・

ひまでしょ!!

はい。

お次は
数字のトリビア.009

なんか良くわかりませんが上記の操作をすると
必ず同じ数字に戻るんだそうです。
なんか不思議ですね
for i in range(100,1000):
    a2 = int(str(i)*2)
    a3 = a2//7
    a4 = a3//11
    a5 = a4//13
    print(i,a5)



トリは
数字のトリビア.010

ゾロ目以外の4桁の数字で
数字を大きい順に並び替えたものから
数字を小さい順に並び替えたものを引く。

それをまた同じ操作をしていくと・・・

6174になるんだそう。

検証したコードはこちらに。

まずは上記の操作をする関数kapを作ります。
6174になるまで再帰します。

def kap(i):
    ma = sorted([a for a in str(i)],reverse=True)
    mi  = sorted([a for a in str(i)])
    m  = int(''.join(ma)) - int(''.join(mi))
    if m ==6174:
        return m
    else:
        return kap(m)
for i in range(1000,10000):
    if str(i)[0]==str(i)[1]==str(i)[2]==str(i)[3]:
        continue
    else:
        try:
            m = kap(i)
            print(i,m)
        except:
            print(i,'X')

あとはゾロ目は除いて
4桁の数字を検証。

だいたいは
6174になるようですね。
一部は再帰が終わらずエラーになってしまいました。


このように
最大に並べ替えたものから最小に並べ替えたものを引いた答えが
元と同じになるような数をカプレカ数と言うのだそうで。

なかなか面白い数字ですね。

また次回もお楽しみに!!

数字にまつわるトリビアを
Pythonで検証してみました。


解説動画はこちら




まず始めのトリビアは

数字のトリビア.002

はい、1回折れれば厚さが二倍になるということで
検証したコードがこちら
moon = 0.08 * (2 ** 43)
print('{}万キロ'.format(moon/10/100/1000/10000))
70.368744177664万キロ

飛んでもないですね
43乗すれば月まで届きそうですね

折れればですが

花山薫のピンチ力をもってしても
無理そうな問題です

お次が
数字のトリビア.003
コードは
for i in range(1,10):
    print('3912657840 / {0} '.format(i) , 3912657840%i)

3912657840 / 1 0
3912657840 / 2 0
3912657840 / 3 0
3912657840 / 4 0
3912657840 / 5 0
3912657840 / 6 0
3912657840 / 7 0
3912657840 / 8 0
3912657840 / 9 0

余りがないということは割り切れている
ということで、きれいに割り切れました。

お次は
数字のトリビア.004

これまた割り切り問題ですね

コードは
まずこの9つの数字を使った順列を求めます。
import itertools
seq = ['1','2','3','4','5','6','7','8','9']
per = list(itertools.permutations(seq))
print(len(per))
362880

この順列と同じだけ検証して
合っていれば+1カウントします。

結果は・・
count = 0
for tmp in itertools.permutations(seq):
    num = int(''.join(tmp))
    if num % 3 == 0:
        count+=1
print(count)
362880

全部割り切れました。1-9全部使った9桁の数値は
みな3で割り切れます。

ちなみにこの数は絶対9の倍数になるので
必ず3では割り切れるようになっています。

次は
数字のトリビア.005


コードは
for i in range(1,10):
    print('12345679 * 9 * {0}'.format(i) , 12345679 * 9 * i)

12345679 * 9 * 1 111111111
12345679 * 9 * 2 222222222
12345679 * 9 * 3 333333333
12345679 * 9 * 4 444444444
12345679 * 9 * 5 555555555
12345679 * 9 * 6 666666666
12345679 * 9 * 7 777777777
12345679 * 9 * 8 888888888
12345679 * 9 * 9 999999999

結果は綺麗にそろいます。
元の数字は8だけ抜けてますけどね。

さて最後は
数字のトリビア.006


語呂合わせで
18782 + 18782

この結果は・・・・

37564

ということでした。
良く知られた数字の計算ですね。

また次回も数字のトリビアをお送りします。

データサイエンティストになるには


データサイエンティストとは

最近になって出てきた職種のため明確な定義があるわけではなさそうですが

「統計解析やITスキルを用いてデータ分析を行い、ビジネス課題を解決する職務」

こんなところでしょうか

これまでにはない、新しいタイプのデータ分析を行える専門家という位置付けです




データサイエンティストが生まれた背景

従来、ビジネス課題の解決において
データから因果関係を推測するのを「マーケター」
とよばれる職種の人々が主に担務していましたが
顧客のニーズの多様化により
データ分析にも専門性やスピードが求められることとなり
データ分析だけを専門で行う人がふえてきました

しかし大量のデータを扱ったり
ビジネス課題の変化に伴い必要となるスキルや領域が増えたため
「ビジネススキル」「統計解析スキル」「ITスキル」
それらをまとめてできる人材をデータサイエンティストと呼ぶようになってきました




データサイエンティストの仕事とは

主な仕事の内容を簡単にまとめると
・課題の要件整理
・データを収集する
・データの整理、運用
・データ分析
・データの可視化
・課題解決

このようなことをやっています

「データから事業戦略にとって有益な情報を導き出しビジネスにインパクトを与える」
これが重要な役割です



データサイエンティストになるには

ではどうやったらなれるのでしょうか?
「データサイエンティスト」と呼ばれる職種は2009年ごろの登場と言われているようです
なるために必要な資格などが明確になっているわけではありません

しかし
「データサイエンティスト」を名乗るには
ある一定以上のスキルレベルがあってしかるべきだと思われます

「統計解析スキル」
「ITスキル」
「ビジネススキル」

この3つのスキル領域のうちの1つの専門家が
他の領域へスキルレベルを広げてゆくのが一般的です


人によっては
大学で「統計解析」を学び企業に入った
という人もいると思うので、そういう人は
「ITスキル」
「ビジネススキル」
を覚えていくだけで良いのですが
何もやったことのない人がなるには大変です

おそらく一番簡単なのが
「ビジネススキル」

ついで
「ITスキル」「統計解析スキル」
となるので
「ビジネススキル」
は先に覚えてしまうのが良いでしょう

1からデータサイエンティストを目指すのであれば
まずはビジネスのことを知り
課題解決へのアプローチの中で
どんな手法が必要か、その手法を行うためには
どんなスキルが必要かを学び少しづつ覚えてゆくのが
良いかと思います


データサイエンティストに必要な3つのスキル

それぞれの領域でどれだけの知識が必要なのかを詳細にまとめます


ビジネススキル」(ビジネス力)
問題課題の切り分け
ビジネス要件の整理、企画、提案
目的、ゴール設定
KPI設計
ビジネスフレームワーへの知識
分析結果への洞察力
リスク管理
マネジメント力

「ITスキル」(データエンジニアリング力)
データベースに関する知識
プログラミングに関する知識
インフラに関する知識
アーキテクトにかんする知識
SDKやAPI,ミドルウェアに関する知識
セキュリティに関する知識
データの収集、蓄積、加工、共有にかんする知識
分析環境の構築方法

「統計解析スキル」(データサイエンス力)
データの加工プロセス
データ分析の基礎知識
データの可視化方法
数学の知識
統計学の知識
機械学習の知識
モデリングに関する知識

必要な領域は常に増え続けているため
ここに書ききれないほどの量です

また一般社団法人データサイエンティスト協会では
次のように領域をまとめられて

必要なスキル内容をチェックすることもできます

これらを少しづつ網羅してゆくことで
データサイエンティストに近づくことができます







このページのトップヘ