デヌタサむ゚ンスポヌトフォリオの䜜成デヌタによるストヌリヌ

翻蚳者の序文

翻蚳は、Habrに関する他のデヌタサむ゚ンスチュヌトリアルのストリヌムに突然成功したした。 :)
これはDataquest.ioの創蚭者であるVic Paruchuriによっお曞かれたした。圌らはこの皮のデヌタサむ゚ンスのむンタラクティブなトレヌニングず、この分野での実際の䜜業の準備に埓事しおいたす。 ここには排他的なノりハりはありたせんが、デヌタの収集からそれらに関する最初の結論たでのプロセスは非垞に詳现に説明されおいたす。しかし、どこから始めればいいのかわかりたせん。


デヌタサむ゚ンス䌁業は、採甚を決定する際にポヌトフォリオをたすたす怜蚎しおいたす。 これは、特に、実践的なスキルを刀断する最良の方法はポヌトフォリオを䜿甚するこずだからです。 良いニュヌスは、完党に自由に䜿えるこずです。詊しおみるず、倚くの䌁業を感動させる優れたポヌトフォリオをたずめるこずができたす。


高品質のポヌトフォリオの最初のステップは、その䞭で実蚌する必芁があるスキルを理解するこずです。


䌁業がデヌタサむ゚ンティストで芋たいず考えおいる䞻芁なスキルは、次のずおりです。



すべおの優れたポヌトフォリオには耇数のプロゞェクトが含たれおおり、各プロゞェクトには1〜2個のデヌタポむントを衚瀺できたす。 これは、調和の取れたデヌタサむ゚ンスポヌトフォリオの取埗を怜蚎するシリヌズの最初の投皿です。 ポヌトフォリオの最初のプロゞェクトを䜜成する方法ず、デヌタを通じお良いストヌリヌを䌝える方法を芋おいきたす。 最埌に、あなたのコミュニケヌション胜力ずデヌタに基づいお結論を出す胜力を明らかにするプロゞェクトがありたす。


ご泚意 perev。

サむクル党䜓を翻蚳するこずは絶察にありたせんが、そこから機械孊習に関する興味深いチュヌトリアルに觊れる予定です。


デヌタによる履歎


基本的に、デヌタサむ゚ンスはコミュニケヌションに関するものです。 デヌタにあるパタヌンを芋た埌、このパタヌンを他の人に説明するための効果的な方法を探し、必芁だず思う行動をずるように説埗したす。 デヌタサむ゚ンスで最も重芁なスキルの1぀は、デヌタを通じおストヌリヌを芖芚化するこずです。 良いストヌリヌはあなたの掞察をより良く䌝え、他の人があなたのアむデアを理解するのを助けたす。


デヌタサむ゚ンスの文脈でのストヌリヌは、あなたが芋぀けたすべおの抂芁ずその意味です。 䟋ずしお、過去1幎間で䌚瀟の利益が20枛少したずいう発芋がありたす。 この事実を指摘するだけでは十分ではありたせん。なぜ利益が萜ちたのか、それに぀いおどうするのかを説明する必芁がありたす。


デヌタのストヌリヌの䞻なコンポヌネントは次のずおりです。



デヌタを通じおストヌリヌを明確に䌝える最良の方法はJupyterノヌトブックです。 あなたが圌に慣れおいないなら、 これは良いチュヌトリアルです。 Jupyterノヌトブックを䜿甚するず、デヌタをむンタラクティブに探玢し、githubを含むさたざたなサむトに公開できたす。 結果の公開はコラボレヌションに圹立ちたす-他の人が分析を拡匵できたす。


この投皿では、PandasやmatplotlibなどのPythonラむブラリずずもにJupyterノヌトブックを䜿甚したす。


デヌタサむ゚ンスプロゞェクトのトピックを遞択する


プロゞェクトを䜜成する最初のステップは、テヌマを決定するこずです。 あなたが興味を持ち、探求したいずいう䜕かを遞ぶ䟡倀がありたす。 人々は、い぀それを実珟するためだけにプロゞェクトを䜜成したか、い぀デヌタを掘り䞋げるこずが本圓に面癜かったのかを垞に確認できたす。 このステップでは、魅力的な䜕かを正確に芋぀けるために時間を費やすこずが理にかなっおいたす。


トピックを芋぀ける良い方法は、異なるデヌタセットに登っお、䜕が面癜いかを芋るこずです。 開始するのに適した堎所を次に瀺したす。



実際のデヌタサむ゚ンスでは、研究甚に完党に準備されたデヌタセットが芋぀からないこずがよくありたす。 さたざたなデヌタ゜ヌスを集玄するか、真剣にクリヌンアップする必芁がある堎合がありたす。 トピックがあなたにずっお非垞に興味深い堎合、ここで同じこずをするのは理にかなっおいたす最埌に自分自身を芋せた方が良いです。
ここから投皿にニュヌペヌクの総合孊校のデヌタを䜿甚したす 。


ご泚意 perev。

念のため、私たちに近い類䌌のデヌタセットロシア語の䟋を瀺したす。



トピック遞択


プロゞェクト党䜓を最初から最埌たで䜜成するこずが重芁です。 これを行うには、孊習範囲を制限しお、終了する内容を正確に把握しおおくず䟿利です。 既に終了したプロゞェクトに既に䜕かを远加する方が、既に終わりに持っおいくのに飜き飜きしおいるものを完成させるよりも簡単です。


私たちのケヌスでは、高校生向けの統䞀囜家詊隓の成瞟を、さたざたな人口統蚈およびその他の情報ずずもに調査したす。 詊隓たたは統䞀状態詊隓は、高校生が倧孊に入る前に受けるテストです。 倧孊は、入孊を決定するずきに成瞟を考慮したす。したがっお、合栌するこずが非垞に重芁です。 詊隓は3぀のパヌトで構成され、各パヌトの評䟡は800ポむントです。 最埌の合蚈スコアは2400ですただし、前埌に倉動するこずもありたす-デヌタセットではすべお2400です。 高校は、倚くの堎合、平均詊隓スコアでランク付けされ、通垞、高い平均点は孊区がどれだけ良いかを瀺す指暙です。


米囜の䞀郚の少数民族の評䟡の䞍公正に぀いお䞍満がいく぀かありたした。そのため、ニュヌペヌクでの分析は、詊隓の公平性を明らかにするのに圹立ちたす。


USE評䟡のデヌタセットはこちら 、各孊校の情報を含むデヌタセットはこちらです。 これがプロゞェクトの基瀎になりたすが、完党な分析を行うにはさらに情報が必芁です。


ご泚意 perev。

元の詊隓は、SAT-Scholastic Aptitude Testず呌ばれたす。 しかし、それは私たちのUSEず実質的に同じ意味なので、そのように翻蚳するこずにしたした。


デヌタ収集


良いトピックが芋぀かったら、トピックを展開したり、調査を深めたりするのに圹立぀他のデヌタセットを調べるず䟿利です。 プロゞェクトが䜜成されるのず同じくらい倚くのデヌタがスタディに存圚するように、最初にこれを行うこずをお勧めしたす。 デヌタが少ない堎合、すぐに降䌏する可胜性がありたす。


私たちの堎合、同じサむトのこのトピックには、人口統蚈情報ず詊隓結果をカバヌするデヌタセットがいく぀かありたす。


䜿甚するすべおのデヌタセットぞのリンクは次のずおりです。



これらのデヌタはすべお盞互接続されおおり、分析を開始する前にそれらを組み合わせるこずができたす。


背景情報の収集


デヌタ分析に入る前に、䞻題に関する䞀般的な情報を芋぀けるこずは有甚です。 私たちの堎合、圹に立぀かもしれない䜕かを知っおいたす



ご泚意 perev。

「Neighborhoods」ず翻蚳したものは、実際にはNYC「自治区」ず呌ばれ、列はそれぞれ自治区ず呌ばれたす。


デヌタを理解しおいたす


デヌタのコンテキストを本圓に理解するには、時間をかけおこのデヌタに぀いお読む必芁がありたす。 この堎合、䞊蚘の各リンクには各列のデヌタの説明が含たれおいたす。 人口統蚈やその他の情報を含む他のデヌタセットずずもに、高校生の詊隓の掚定倀に関するデヌタがあるようです。


コヌドを実行しおデヌタを読み取りたしょう。 研究にはJupyterノヌトブックを䜿甚したす。 以䞋のコヌド



import pandas import numpy as np files = ["ap_2010.csv", "class_size.csv", "demographics.csv", "graduation.csv", "hs_directory.csv", "math_test_results.csv", "sat_results.csv"] data = {} for f in files: d = pandas.read_csv("schools/{0}".format(f)) data[f.replace(".csv", "")] = d 

すべおを読んだら、デヌタフレヌムでheadメ゜ッドを䜿甚しお、それぞれの最初の5行を衚瀺できたす。


 for k,v in data.items(): print("\n" + k + "\n") print(v.head()) 

デヌタセット内の特定の機胜を既に確認できたす。
math_test_results


Dbnグレヌド幎カテゎリヌテスト枈みの数平均スケヌルスコアレベル1\
001M01532006すべおの孊生396672
101M01532007幎すべおの孊生316722
201M01532008幎すべおの孊生376680
301M01532009すべおの孊生336680
401M01532010すべおの孊生266776

レベル1レベル2レベル2レベル3レベル3レベル4レベル4\
05.11128.22051.3615.4
16.539.72271412.9
20616.229日78.425.4
30412.12884.813
423.11246.2623.127.7

レベル3 + 4レベル3 + 4
02666.7
12683.9
23183.8
329日87.9
4830.8

ap_2010


Dbn孊校名AP受隓者合蚈詊隓数スコア3 4たたは5の詊隓の数
001M448倧孊ネむバヌフッドHS394910
101M450むヌストサむドコミュニティHS1921s
201M515むヌストサむドの䞋ごしらえ242624
301M539新しい探査SCI、TECH、MATH255377191
402M296ホスピタリティマネゞメントの高校sss

sat_results


Dbn孊校名SAT受隓者数SAT Critical Reading Avg。 埗点SAT Math平均 埗点SATラむティング平均 埗点
001M292囜際研究のためのヘンリヌストリヌトスクヌル29日355404363
101M448倧孊近隣高等孊校91383423366
201M450むヌストサむドコミュニティスクヌル70377402370
301M458フォヌサむスサテラむトアカデミヌ7414401359
401M509マルタバレヌハむスクヌル44390433384

class_size


CSD自治区孊校コヌド孊校名グレヌドプログラムの皮類CORE SUBJECTMS COREおよび9-12のみコアコヌスMSコアおよび9-12のみ\
01MM015PS 015ロベルトクレメンテ0KGEN ED--
11MM015PS 015ロベルトクレメンテ0KCTT--
21MM015PS 015ロベルトクレメンテ01GEN ED--
31MM015PS 015ロベルトクレメンテ01CTT--
41MM015PS 015ロベルトクレメンテ02GEN E--

サヌビスカテゎリK-9 *のみ受講者数/垭数セクションの数平均クラスサむズ最小クラスのサむズ\
0-19.01.019.019.0
1-21.01.021.021.0
2-17.01.017.017.0
3-17.01.017.017.0
4-15.01.015.015.0

最倧クラスのサむズデヌタ゜ヌス孊校の生埒ず教垫の比率
019.0ATSナン
121.0ATSナン
217.0ATSナン
317.0ATSナン
415.0ATSナン

人口統蚈


Dbnお名前孊幎fl_percentfrl_percent\
001M015PS 015ロベルトクレメンテ2005200689.4ナン
101M015PS 015ロベルトクレメンテ2006200789.4ナン
201M015PS 015ロベルトクレメンテ2007200889.4ナン
301M015PS 015ロベルトクレメンテ2008200989.4ナン
401M015PS 015ロベルトクレメンテ2009201096.5

total_enrollmentプレックkグレヌド1グレヌド2...black_numblack_per\
028115364033...7426.3
12431529日3938...6828.0
226118433936...7729.5
325217374432...7529.8
420816402832...6732.2

hispanic_numhispanic_perwhite_numwhite_permale_nummale_perfemale_numfemale_per\
018967.351.8158.056.2123.043.8
115363.041.6140.057.6103.042.4
215760.272.7143.054.8118.045.2
314959.172.8149.059.1103.040.9
411856.762.9124.059.684.040.4

卒業


人口統蚈Dbn孊校名コホヌト\
0総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2003
1総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2004
2総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2005幎
3総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2006
4総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2006幎8月

総コホヌト総卒業-n総卒業生-コホヌトの割合合蚈リヌゞェント-n\
05sss
1553767.317
2644367.227
3784355.136
4784456.437

総リヌゞェント-コホヌトの総リヌゞェント-卒業生の割合...高床なしのリヌゞェント-n\
0ss...s
130.945.9...17
242.262.8...27
346.283.7...36
447.484.1...37

高床なしのリヌゞェント-コホヌトの高床なしのリヌゞェント-卒業生の\
0ss
130.945.9
242.262.8
346.283.7
447.484.1

ロヌカル-nロヌカル-コホヌトのロヌカル-卒業生のsただ登録枈み-n\
0ssss
12036.454.115
2162537.2000000000000039
37916.316
47915.915

ただ登録枈み-コホヌトのドロップアりト-nドロップアりト-コホヌトの
0sss
127.335.5
214.1914.1
320.51114.1
419.21114.1

hs_directory


dbnschool_nameボロ\
017K548ブルックリン音楜孊校ブルックリン
109X543バむオリンずダンスの高校ブロンクス
209X327包括的なモデルスクヌルプロゞェクトMS 327ブロンクス
302M280マンハッタン広告倧孊マンハッタン
428Q680クむヌンズヘルスゲヌトりェむセカンダリサむ゚ンスコヌス...クむヌンズ

building_code電話番号fax_numbergrade_span_mingrade_span_max\
0K440718-230-6250718-230-6262912
1X400718-842-0687718-589-9849912
2X240718-294-8111718-294-8109612
3M520718-935-3477ナン910
4Q695718-969-3155718-969-3552612

expgrade_span_minexpgrade_span_max...priority02\
0ナンナン...それからニュヌペヌク垂の䜏民ぞ
1ナンナン...その埌、ニュヌペヌク垂の䜏民に出垭し...
2ナンナン...次に、出垭するブロンクスの孊生たたは居䜏者に...
3914.0...その埌、ニュヌペヌク垂の䜏民に出垭し...
4ナンナン...次に、28区および29区の孊生たたは居䜏者ぞ

priority03priority04priority05\
0ナンナンナン
1その埌、ブロンクスの孊生たたは居䜏者にそれからニュヌペヌク垂の䜏民ぞナン
2その埌、ニュヌペヌク垂の䜏民に出垭し...その埌、ブロンクスの孊生たたは居䜏者にそれからニュヌペヌク垂の䜏民ぞ
3その埌、マンハッタンの孊生たたは居䜏者にそれからニュヌペヌク垂の䜏民ぞナン
4その埌、クむヌンズの孊生たたは居䜏者ぞそれからニュヌペヌク垂の䜏民ぞナン

priority06priority07priority08priority09優先床10堎所1
0ナンナンナンナンナン883 Classon Avenue \ nブルックリン、ニュヌペヌク11225 \ n40.67 ...
1ナンナンナンナンナン1110 Boston Road \ nBronx、NY 10456 \ n40.8276026 ...
2ナンナンナンナンナン1501ゞェロヌムアベニュヌ\ nブロンクス、ニュヌペヌク10452 \ n40.84241 ...
3ナンナンナンナンナン411 Pearl Street \ nニュヌペヌク、NY 10038 \ n40.7106 ...
4ナンナンナンナンナン160-20 Goethals Avenue \ nゞャマむカ、NY 11432 \ n40 ...


共通分母にデヌタをもたらす


デヌタの操䜜を簡単にするには、すべおのデヌタセットを1぀に結合する必芁がありたす。これにより、デヌタセットの列をすばやく比范できたす。 このためには、たず、組合の共通の列を芋぀ける必芁がありたす。 以前に掚枬した内容を芋るず、 DBNは耇数のデヌタセットで繰り返されおいるため、 DBNがそのような列であるず想定できたす。


「DBN New York City Schools」をGoogleで怜玢するず、 ここに来たす 。これは、DBNが各孊校に固有のコヌドであるこずを説明しおいたす。 デヌタセット、特に政府のデヌタセットの調査では、各列が䜕を意味するのかを理解するために、しばしば各デヌタセットでさえ、探偵の仕事をしなければなりたせん。


珟圚の問題は、 class_sizeずhs_directoryの 2぀のデヌタセットにDBNが含たれおいないこずです。 hs_directoryでは、dbnず呌ばれるため、名前を倉曎するか、 DBNにコピヌするだけです。 Class_sizeには別のアプロヌチが必芁です。


DBN列は次のようになりたす。


 In [5]: data["demographics"]["DBN"].head() Out[5]: 0 01M015 1 01M015 2 01M015 3 01M015 4 01M015 Name: DBN, dtype: object 

class_sizeを芋るず、これが最初の5行に衚瀺されたす。


 In [4]: data["class_size"].head() Out[4]: 

CSD自治区孊校コヌド孊校名グレヌドプログラムの皮類CORE SUBJECTMS COREおよび9-12のみ/
01MM015PS 015ロベルトクレメンテ0KGEN ED-
11MM015PS 015ロベルトクレメンテ0KCTT-
21MM015PS 015ロベルトクレメンテ01GEN ED-
31MM015PS 015ロベルトクレメンテ01CTT-
41MM015PS 015ロベルトクレメンテ02GEN ED-

コアコヌスMSコアおよび9-12のみサヌビスカテゎリK-9 *のみ受講者数/åž­æ•°/
0--19.0
1--21.0
2--17.0
3--17.0
4--15.0

セクションの数平均クラスサむズ最小クラスのサむズ最倧クラスのサむズデヌタ゜ヌス孊校の生埒ず教垫の比率
01.019.019.019.0ATSナン
11.021.021.021.0ATSナン
21.017.017.017.0ATSナン
31.017.017.017.0ATSナン
41.015.015.015.0ATSナン

ご芧のずおり、DBNはCSD 、 BOROUGH 、およびSCHOOL_ CODEの単なる組み合わせです。 ニュヌペヌクに䞍慣れな人のためにそれは5぀の地区で構成されおいたす。 各゚リアは、十分に倧きい米囜の郜垂ずほが同じサむズの組織単䜍です。 DBNは、地区地区番号の略です。 CSDは郡のようで、 BOROUGHは地区であり、 SCHOOL_CODEず組み合わせるずDBNが取埗されたす。


DBNの䜜成方法がわかったので、それをclass_sizeずhs_directoryに远加できたす。


 In [ ]: data["class_size"]["DBN"] = data["class_size"].apply(lambda x: "{0:02d}{1}".format(x["CSD"], x["SCHOOL CODE"]), axis=1) data["hs_directory"]["DBN"] = data["hs_directory"]["dbn"] 

アンケヌトを远加


最も興味深い可胜性のあるデヌタセットの1぀は、孊校の質に関する孊生、保護者、教垫の調査のデヌタセットです。 これらの調査には、各孊校の安党性、教育基準などの䞻芳的な認識に関する情報が含たれおいたす。 デヌタセットを結合する前に、調査デヌタを远加したしょう。 実際のデヌタサむ゚ンスプロゞェクトでは、分析䞭に興味深いデヌタに出くわすこずが倚く、そのデヌタも接続したい堎合がありたす。 Jupyterノヌトブックなどの柔軟なツヌルを䜿甚するず、コヌドをすばやく远加しお分析をやり盎すこずができたす。


この䟋では、远加のポヌリングデヌタをデヌタディクショナリに远加し、すべおのデヌタセットを結合したす。 調査デヌタは、すべおの孊校甚ず孊区75甚の2぀のファむルで構成されおいたす。これらを結合するには、いく぀かのコヌドを蚘述する必芁がありたす。 その䞭でそれを行いたす



 In [66]: survey1 = pandas.read_csv("schools/survey_all.txt", delimiter="\t", encoding='windows-1252') survey2 = pandas.read_csv("schools/survey_d75.txt", delimiter="\t", encoding='windows-1252') survey1["d75"] = False survey2["d75"] = True survey = pandas.concat([survey1, survey2], axis=0) 

すべおの投祚を結合するずすぐに、さらなる困難が生じたす。 結合されたデヌタセットの列の数を最小限に抑えお、列を簡単に比范しお䟝存関係を識別できるようにしたす。 残念ながら、調査デヌタには䞍必芁な列が倚く含たれおいたす。


 In [16]: survey.head() Out[16]: 

N_pN_sN_taca_p_11aca_s_11aca_t_11aca_tot_11/
090.0ナン22.07.8ナン7.97.9
1161.0ナン34.07.8ナン9.18.4
2367.0ナン42.08.6ナン7.58.0
3151.0145.029.08.57.47.87.9
490.0ナン23.07.9ナン8.18.0

十億com_p_11com_s_11...t_q8c_1t_q8c_2t_q8c_3t_q8c_4/
0M0157.6ナン...29.067.05.00.0
1M0197.6ナン...74.021.06.00.0
2M0208.3ナン...33.035.020.013.0
3M0348.25.9...21.045.028.07.0
4M0637.9ナン...59.036.05.00.0

t_q9t_q9_1t_q9_2t_q9_3t_q9_4t_q9_5
0ナン5.014.052.024.05.0
1ナン3.06.03.078.09.0
2ナン3.05.016.070.05.0
3ナン0.018.032.039.011.0
4ナン10.05.010.060.015.0

これは、調査デヌタずずもにダりンロヌドしたデヌタ蟞曞ファむルを調べるこずで凊理できたす。 圌は重芁な分野に぀いお教えおくれたす。


そしお、調査で私たちに関係のないすべおの列を削陀したす。


 In [17]: survey["DBN"] = survey["dbn"] survey_fields = ["DBN", "rr_s", "rr_t", "rr_p", "N_s", "N_t", "N_p", "saf_p_11", "com_p_11", "eng_p_11", "aca_p_11", "saf_t_11", "com_t_11", "eng_t_10", "aca_t_11", "saf_s_11", "com_s_11", "eng_s_11", "aca_s_11", "saf_tot_11", "com_tot_11", "eng_tot_11", "aca_tot_11",] survey = survey.loc[:,survey_fields] data["survey"] = survey survey.shape Out[17]: (1702, 23) 

各デヌタセットが正確に䜕を含むのか、そしおそれからどの列が重芁であるのかを理解するこずで、将来の時間ず劎力を倧幅に節玄できたす。


デヌタセットを圧瞮したす


class_sizeを含むいく぀かのデヌタセットを芋るず、すぐに問題がわかりたす。


 In [18]: data["class_size"].head() Out[18]: 

CSD自治区孊校コヌド孊校名グレヌドプログラムの皮類CORE SUBJECTMS COREおよび9-12のみ/
01MM015PS 015ロベルトクレメンテ0KGEN ED-
11MM015PS 015ロベルトクレメンテ0KCTT-
21MM015PS 015ロベルトクレメンテ01GEN ED-
31MM015PS 015ロベルトクレメンテ01CTT-
41MM015PS 015ロベルトクレメンテ02GEN ED-

コアコヌスMSコアおよび9-12のみサヌビスカテゎリK-9 *のみ受講者数/垭数セクションの数平均クラスサむズ/
0--19.01.019.0
1--21.01.021.0
2--17.01.017.0
3--17.01.017.0
4--15.01.015.0

最小クラスのサむズ最倧クラスのサむズデヌタ゜ヌス孊校の生埒ず教垫の比率Dbn
019.019.0ATSナン01M015
121.021.0ATSナン01M015
217.017.0ATSナン01M015
317.017.0ATSナン01M015
415.015.0ATSナン01M015

各孊校には耇数の行がありたす重耇するフィヌルドDBNずSCHOOL NAMEから理解できたす。 ただし、 sat_resultsを芋るず、孊校ごずに1行しかありたせん。


 In [21]: data["sat_results"].head() Out[21]: 

Dbn孊校名SAT受隓者数SAT Critical Reading Avg。 埗点SAT Math平均 埗点SATラむティング平均 埗点
001M292囜際研究のためのヘンリヌストリヌトスクヌル29日355404363
101M448倧孊近隣高等孊校91383423366
201M450むヌストサむドコミュニティスクヌル70377402370
301M458フォヌサむスサテラむトアカデミヌ7414401359
401M509マルタバレヌハむスクヌル44390433384

これらのデヌタセットを結合するには、 class_sizeなどのデヌタセットを圧瞮しお、高校ごずに1぀の行があるようにする方法が必芁です。 うたくいかない堎合は、うたくいかず、USEグレヌドをクラスサむズず比范したす。 これを実珟するには、デヌタをよりよく理解しおから、いく぀かの集蚈を実行したす。


class_size デヌタセット別-GRADEずPROGRAM TYPEには孊校ごずに異なる成瞟が含たれおいるようです。 各フィヌルドを単䞀の倀に制限するこずにより、重耇する行をすべお砎棄できたす。 以䞋のコヌドでは



 In [68]: class_size = data["class_size"] class_size = class_size[class_size["GRADE "] == "09-12"] class_size = class_size[class_size["PROGRAM TYPE"] == "GEN ED"] class_size = class_size.groupby("DBN").agg(np.mean) class_size.reset_index(inplace=True) data["class_size"] = class_size 

残りのデヌタセットを厚くする


次に、 人口統蚈デヌタセットを圧瞮する必芁がありたす。 同じ孊校に぀いお数幎にわたっお収集されたデヌタ。 schoolyearフィヌルドがすべおの䞭で最も新しい行のみを遞択したす。


 In [69]: demographics = data["demographics"] demographics = demographics[demographics["schoolyear"] == 20112012] data["demographics"] = demographics 

次に、math_test_results デヌタセットを圧瞮する必芁がありたす。 GradeずYearの倀で陀算されたす。 1幎間で1぀のクラスを遞択できたす。


 In [70]: data["math_test_results"] = data["math_test_results"][data["math_test_results"]["Year"] == 2011] data["math_test_results"] = data["math_test_results"][data["math_test_results"]["Grade"] == 

最埌に、 卒業も凝瞮する必芁がありたす。


 In [71]: data["graduation"] = data["graduation"][data["graduation"]["Cohort"] == "2006"] data["graduation"] = data["graduation"][data["graduation"]["Demographic"] == "Total Cohort"] 

プロゞェクトの本質に取り組む前に、デヌタをクリヌンアップしお調査するこずが重芁です。 いいね 合う 包括的なデヌタセットは、分析を高速化するのに圹立ちたす。


集玄倉数の蚈算


倉数の蚈算は、比范をより高速に行う機胜により分析を高速化し、原則ずしお、倉数なしでは䞍可胜ないく぀かの比范を可胜にしたす。 最初にできるこずは、個々のSAT Math Avg列から合蚈詊隓スコアを蚈算するこずです。 スコア 、 SATクリティカルリヌディング平均 スコア 、およびSAT Writing Avg。 スコア 。 以䞋のコヌドでは



 In [72]: cols = ['SAT Math Avg. Score', 'SAT Critical Reading Avg. Score', 'SAT Writing Avg. Score'] for c in cols: data["sat_results"][c] = data["sat_results"][c].convert_objects(convert_numeric=True) data['sat_results']['sat_score'] = data['sat_results'][cols[0]] + data['sat_results'][cols[1]] 

次に、各孊校の座暙を解析しおマップを䜜成する必芁がありたす。 圌らは私たちが各孊校の状況を蚘録できるようにしたす。 コヌドでは



デヌタセットを衚瀺し、䜕が起こったかを確認したす。


 In [74]: for k,v in data.items(): print(k) print(v.head()) 

math_test_results


Dbnグレヌド幎カテゎリヌテスト枈みの数平均スケヌルスコア\
11101M03482011すべおの孊生48646
28001M14082011すべおの孊生61665
34601M18482011すべおの孊生49727
38801M18882011すべおの孊生49658
41101M29282011すべおの孊生49650

レベル1レベル1レベル2レベル2レベル3レベル3レベル4\
1111531.32245.81122.90
28011.64370.51727.90
3460000510.244
3881020.42653.11020.43
4111530.62551714.32

レベル4レベル3 + 4レベル3 + 4
11101122.9
28001727.9
34689.849100
3886.11326.5
4114.1918.4

調査


Dbnrr_srr_trr_pN_sN_tN_psaf_p_11com_p_11eng_p_11\
001M015ナン8860ナン22.090.08.57.67.5
101M019ナン10060ナン34.0161.08.47.67.6
201M020ナン8873ナン42.0367.08.98.38.3
301M03489.07350145.029.0151.08.88.28.0
401M063ナン10060ナン23.090.08.77.98.1

...eng_t_10aca_t_11saf_s_11com_s_11eng_s_11aca_s_11\
0...ナン7.9ナンナンナンナン
1...ナン9.1ナンナンナンナン
2...ナン7.5ナンナンナンナン
3...ナン7.86.25.96.57.4
4...ナン8.1ナンナンナンナン

saf_tot_11com_tot_11eng_tot_11aca_tot_11
08.07.77.57.9
18.58.18.28.4
28.27.37.58.0
37.36.77.17.9
48.57.67.98.0

ap_2010


Dbn孊校名AP受隓者合蚈詊隓数スコア3 4たたは5の詊隓の数
001M448倧孊ネむバヌフッドHS394910
101M450むヌストサむドコミュニティHS1921s
201M515むヌストサむドの䞋ごしらえ242624
301M539新しい探査SCI、TECH、MATH255377191
402M296ホスピタリティマネゞメントの高校sss

sat_results


Dbn孊校名SAT受隓者数SAT Critical Reading Avg。 埗点\
001M292囜際研究のためのヘンリヌストリヌトスクヌル29日355.0
101M448倧孊近隣高等孊校91383.0
201M450むヌストサむドコミュニティスクヌル70377.0
301M458フォヌサむスサテラむトアカデミヌ7414.0
401M509マルタバレヌハむスクヌル44390.0

SAT Math平均 埗点SATラむティング平均 埗点sat_score
0404.0363.01122.0
1423.0366.01172.0
2402.0370.01149.0
3401.0359.01174.0
4433.0384.01207.0

class_size


DbnCSD受講者数/垭数セクションの数\
001M292188.00004.000000
101M332146.00002.000000
201M378133.00001.000000
301M4481105.68754.750000
401M450157.60002.733333

平均クラスサむズ最小クラスのサむズ最倧クラスのサむズ孊校の生埒ず教垫の比率
022.56428618.5026.571429ナン
122.000000午埌9時23.500000ナン
233.00000033.0033.000000ナン
322.23125018.2506/27/2500ナン
421.20000019.4022.866667ナン

人口統蚈


Dbnお名前孊幎\
601M015PS 015ロベルトクレメンテ20112012
1301M019PS 019アシャヌレノィヌ20112012
2001M020PS 020アンナシルバヌ20112012
2701M034PS 034フランクリンDルヌズノェルト20112012
3501M063PS 063りィリアム・マッキンレヌ20112012

fl_percentfrl_percenttotal_enrollmentプレックkグレヌド1グレヌド2\
6ナン89.418913313528
13ナン61.532832465254
20ナン92.56265210212187
27ナン99.740114343836
35ナン78.917618203021

...black_numblack_perhispanic_numhispanic_perwhite_num\
6...6333.310957.74
13...8124.715848.228
20...558.835757.016
27...9022.427568.68
35...4123.311062.515

white_permale_nummale_perfemale_numfemale_per
62.197.051.392.048.7
138.5147.044.8181.055.2
202.6330.052.7296.047.3
272.0204.050.9197.049.1
358.597.055.179.044.9

卒業


人口統蚈Dbn孊校名コホヌト\
3総コホヌト01M292ヘンリヌストリヌトスクヌルフォヌむンタヌナショナル2006
10総コホヌト01M448倧孊近隣高等孊校2006
17総コホヌト01M450むヌストサむドコミュニティスクヌル2006
24総コホヌト01M509マルタバレヌハむスクヌル2006
31総コホヌト01M515䞋郚東偎準備高等孊校2006

総コホヌト総卒業-n総卒業生-コホヌトの割合合蚈リヌゞェント-n\
3784355.136
101245342.742
17907077.867
2484475640
3119310554.491

総リヌゞェント-コホヌトの総リヌゞェント-卒業生の割合...高床なしのリヌゞェント-n\
346.283.7...36
1033.979.2...34
1774.40000000000000695.7...67
2447.685.1...23
3147.286.7...22

Regents w/o Advanced — % of cohortRegents w/o Advanced — % of grads\
346.2%83.7%
1027.4%64.2%
1774.400000000000006%95.7%
2427.4%48.9%
3111.4%21%

Local — nLocal — % of cohortLocal — % of gradsStill Enrolled — n\
379%16.3%16
10118.9%20.8%46
1733.3%4.3%15
2478.300000000000001%14.9%25
31147.3%13.3%53

Still Enrolled — % of cohortDropped Out — nDropped Out — % of cohort
320.5%1114.1%
1037.1%2016.100000000000001%
1716.7%55.6%
2429.8%56
3127.5%3518.100000000000001%

hs_directory


dbnschool_nameboro\
017K548Brooklyn School for Music & TheatreBrooklyn
109X543High School for Violin and DanceBronx
209X327Comprehensive Model School Project MS 327Bronx
302M280Manhattan Early College School for Advertisingマンハッタン
428Q680Queens Gateway to Health Sciences Secondary Sc...Queens

building_codephone_numberfax_numbergrade_span_mingrade_span_max\
0K440718-230-6250718-230-6262912
1X400718-842-0687718-589-9849912
2X240718-294-8111718-294-8109612
3M520718-935-3477ナン910
4Q695718-969-3155718-969-3552612

expgrade_span_minexpgrade_span_max...priority05priority06priority07priority08\
0ナンナン...ナンナンナンナン
1ナンナン...ナンナンナンナン
2ナンナン...Then to New York City residentsナンナンナン
3914.0...ナンナンナンナン
4ナンナン...ナンナンナンナン

priority09priority10Location 1\
0ナンナン883 Classon Avenue\nBrooklyn, NY 11225\n(40.67...
1ナンナン1110 Boston Road\nBronx, NY 10456\n(40.8276026...
2ナンナン1501 Jerome Avenue\nBronx, NY 10452\n(40.84241...
3ナンナン411 Pearl Street\nNew York, NY 10038\n(40.7106...
4ナンナン160-20 Goethals Avenue\nJamaica, NY 11432\n(40...

DBNlatlon
017K54840.670299-73.961648
109X54340.827603-73.904475
209X32740.842414-73.916162
302M28040.710679-74.000807
428Q68040.718810-73.806500


, DBN. , . , , sat_results . , outer join, . — . — .


.


:



 In [75]: flat_data_names = [k for k,v in data.items()] flat_data = [data[k] for k in flat_data_names] full = flat_data[0] for i, f in enumerate(flat_data[1:]): name = flat_data_names[i+1] print(name) print(len(f["DBN"]) - len(f["DBN"].unique())) join_type = "inner" if name in ["sat_results", "ap_2010", "graduation"]: join_type = "outer" if name not in ["math_test_results"]: full = full.merge(f, on="DBN", how=join_type) full.shape survey 0 ap_2010 1 sat_results 0 class_size 0 demographics 0 graduation 0 hs_directory 0 Out[75]: (374, 174) 


, full , . . , , :


 In [76]: cols = ['AP Test Takers ', 'Total Exams Taken', 'Number of Exams with scores 3 4 or 5'] for col in cols: full[col] = full[col].convert_objects(convert_numeric=True) full[cols] = full[cols].fillna(value=0) 

, school_dist , . , :


 In [77]: full["school_dist"] = full["DBN"].apply(lambda x: x[:2]) 

, full ,


 In [79]: full = full.fillna(full.mean()) 


, , — . , . corr Pandas. 0 — . 1 — . -1 — :


 In [80]: full.corr()['sat_score'] Out[80]: Year NaN Number Tested 8.127817e-02 rr_s 8.484298e-02 rr_t -6.604290e-02 rr_p 3.432778e-02 N_s 1.399443e-01 N_t 9.654314e-03 N_p 1.397405e-01 saf_p_11 1.050653e-01 com_p_11 2.107343e-02 eng_p_11 5.094925e-02 aca_p_11 5.822715e-02 saf_t_11 1.206710e-01 com_t_11 3.875666e-02 eng_t_10 NaN aca_t_11 5.250357e-02 saf_s_11 1.054050e-01 com_s_11 4.576521e-02 eng_s_11 6.303699e-02 aca_s_11 8.015700e-02 saf_tot_11 1.266955e-01 com_tot_11 4.340710e-02 eng_tot_11 5.028588e-02 aca_tot_11 7.229584e-02 AP Test Takers 5.687940e-01 Total Exams Taken 5.585421e-01 Number of Exams with scores 3 4 or 5 5.619043e-01 SAT Critical Reading Avg. Score 9.868201e-01 SAT Math Avg. Score 9.726430e-01 SAT Writing Avg. Score 9.877708e-01 ... SIZE OF SMALLEST CLASS 2.440690e-01 SIZE OF LARGEST CLASS 3.052551e-01 SCHOOLWIDE PUPIL-TEACHER RATIO NaN schoolyear NaN frl_percent -7.018217e-01 total_enrollment 3.668201e-01 ell_num -1.535745e-01 ell_percent -3.981643e-01 sped_num 3.486852e-02 sped_percent -4.413665e-01 asian_num 4.748801e-01 asian_per 5.686267e-01 black_num 2.788331e-02 black_per -2.827907e-01 hispanic_num 2.568811e-02 hispanic_per -3.926373e-01 white_num 4.490835e-01 white_per 6.100860e-01 male_num 3.245320e-01 male_per -1.101484e-01 female_num 3.876979e-01 female_per 1.101928e-01 Total Cohort 3.244785e-01 grade_span_max -2.495359e-17 expgrade_span_max NaN zip -6.312962e-02 total_students 4.066081e-01 number_programs 1.166234e-01 lat -1.198662e-01 lon -1.315241e-01 Name: sat_score, dtype: float64 

, :



— .


ご泚意 perev。

, ( ) . , , , — .
, , . , . .



, , , , , . — . , , .


:



 In [82]: import folium from folium import plugins schools_map = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10) marker_cluster = folium.MarkerCluster().add_to(schools_map) for name, row in full.iterrows(): folium.Marker([row["lat"], row["lon"]], popup="{0}: {1}".format(row["DBN"], row["school_name"])).add_to(marker_cluster) schools_map.create_map('schools.html') schools_map Out[82]: 


, , - . :


 In [84]: schools_heatmap = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10) schools_heatmap.add_children(plugins.HeatMap([[row["lat"], row["lon"]] for name, row in full.iterrows()])) schools_heatmap.save("heatmap.html") schools_heatmap Out[84]: 



, - , . , .. . - , .


. :



 In [ ]: district_data = full.groupby("school_dist").agg(np.mean) district_data.reset_index(inplace=True) district_data["school_dist"] = district_data["school_dist"].apply(lambda x: str(int(x)) 

. GeoJSON , , school_dist , , , .


 In [85]: def show_district_map(col): geo_path = 'schools/districts.geojson' districts = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10) districts.geo_json( geo_path=geo_path, data=district_data, columns=['school_dist', col], key_on='feature.properties.school_dist', fill_color='YlGn', fill_opacity=0.7, line_opacity=0.2, ) districts.save("districts.html") return districts show_district_map("sat_score") Out[85]: 



, ; , . , , . — , , .


, :


 In [87]: %matplotlib inline full.plot.scatter(x='total_enrollment', y='sat_score') Out[87]: <matplotlib.axes._subplots.AxesSubplot at 0x10fe79978> 


, . , . .


, :


 In [88]: full[(full["total_enrollment"] < 1000) & (full["sat_score"] < 1000)]["School Name"] Out[88]: 34 INTERNATIONAL SCHOOL FOR LIBERAL ARTS 143 NaN 148 KINGSBRIDGE INTERNATIONAL HIGH SCHOOL 203 MULTICULTURAL HIGH SCHOOL 294 INTERNATIONAL COMMUNITY HIGH SCHOOL 304 BRONX INTERNATIONAL HIGH SCHOOL 314 NaN 317 HIGH SCHOOL OF WORLD CULTURES 320 BROOKLYN INTERNATIONAL HIGH SCHOOL 329 INTERNATIONAL HIGH SCHOOL AT PROSPECT 331 IT TAKES A VILLAGE ACADEMY 351 PAN AMERICAN INTERNATIONAL HIGH SCHOO Name: School Name, dtype: object 

, , , , , . , — , , .



, , . ell_percent - . :


 In [89]: full.plot.scatter(x='ell_percent', y='sat_score') Out[89]: <matplotlib.axes._subplots.AxesSubplot at 0x10fe824e0> 


, ell_percentage . , , :


 In [90]: show_district_map("ell_percent") Out[90]: 



, , .



, , . , . :


 In [91]: full.corr()["sat_score"][["rr_s", "rr_t", "rr_p", "N_s", "N_t", "N_p", "saf_tot_11", "com_tot_11", "aca_tot_11", "eng_tot_11"]].plot.bar() Out[91]: <matplotlib.axes._subplots.AxesSubplot at 0x114652400> 


, N_p N_s , . , ell_learners . — saf_t_11 . , , . , , — . , , , , . , - , ( — , ).



. , , :


 In [92]: full.corr()["sat_score"][["white_per", "asian_per", "black_per", "hispanic_per"]].plot.bar() Out[92]: <matplotlib.axes._subplots.AxesSubplot at 0x108166ba8> 


, , . , , . , :


 In [93]: show_district_map("hispanic_per") Out[93]: 


, - , .



— . , . :


 In [94]: full.corr()["sat_score"][["male_per", "female_per"]].plot.bar() Out[94]: <matplotlib.axes._subplots.AxesSubplot at 0x10774d0f0> 


, female_per sat_score :


 In [95]: full.plot.scatter(x='female_per', y='sat_score') Out[95]: <matplotlib.axes._subplots.AxesSubplot at 0x104715160> 


, ( ). :


 In [96]: full[(full["female_per"] > 65) & (full["sat_score"] > 1400)]["School Name"] Out[96]: 3 PROFESSIONAL PERFORMING ARTS HIGH SCH 92 ELEANOR ROOSEVELT HIGH SCHOOL 100 TALENT UNLIMITED HIGH SCHOOL 111 FIORELLO H. LAGUARDIA HIGH SCHOOL OF 229 TOWNSEND HARRIS HIGH SCHOOL 250 FRANK SINATRA SCHOOL OF THE ARTS HIGH SCHOOL 265 BARD HIGH SCHOOL EARLY COLLEGE Name: School Name, dtype: object 

, , . . , , , , , .


ご泚意 perev。

, 100 ( ).



. , — , , . , , .


 In [98]: full["ap_avg"] = full["AP Test Takers "] / full["total_enrollment"] full.plot.scatter(x='ap_avg', y='sat_score') Out[98]: <matplotlib.axes._subplots.AxesSubplot at 0x11463a908> 


, . , :


 In [99]: full[(full["ap_avg"] > .3) & (full["sat_score"] > 1700)]["School Name"] Out[99]: 92 ELEANOR ROOSEVELT HIGH SCHOOL 98 STUYVESANT HIGH SCHOOL 157 BRONX HIGH SCHOOL OF SCIENCE 161 HIGH SCHOOL OF AMERICAN STUDIES AT LE 176 BROOKLYN TECHNICAL HIGH SCHOOL 229 TOWNSEND HARRIS HIGH SCHOOL 243 QUEENS HIGH SCHOOL FOR THE SCIENCES A 260 STATEN ISLAND TECHNICAL HIGH SCHOOL Name: School Name, dtype: object 

, , , . , .



data science - . , . , , , .


— . — - . — , .


ご泚意 perev。

, , . :)


次は䜕ですか


— , .


Dataquest , , . — .



Source: https://habr.com/ru/post/J331528/


All Articles