奧巴馬的競(jìng)選資金是一點(diǎn)點(diǎn)從選民那里募集來的。如獲黨內(nèi)提名,可得政府拔款,但也沒多少。美國(guó)大選不僅禁外國(guó)人捐款,而且禁止公司機(jī)構(gòu)捐款,而只允許個(gè)人捐款。不僅如此,還為個(gè)人捐款限制了上限,防止富人捐過多的款而影響未來的公平執(zhí)政。
創(chuàng)新互聯(lián)10多年企業(yè)網(wǎng)站制作服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站制作及推廣,對(duì)圍欄護(hù)欄等多個(gè)領(lǐng)域擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
不僅富人自己不能多捐,如果某個(gè)老板呼吁自己的員工給某人捐錢或投票支持他,都是犯法的。因此,想要籌到幾千萬競(jìng)爭(zhēng)資金,唯一的辦法是爭(zhēng)取更多選民支持,一點(diǎn)點(diǎn)募集。所以,中國(guó)、公司、大筆捐款,這三條都是犯法的。
我記得以前已經(jīng)有華人鬧過這種丑聞了。美國(guó)的選舉法就是要嚴(yán)防少數(shù)人企圖用幾個(gè)臭錢影響美國(guó)的政治。所以我們作為外國(guó)人就更別去自討沒趣了。
導(dǎo)入包
In [1]:
import numpy as npimport pandas as pdfrom pandas import Series,DataFrame
方便大家操作,將月份和參選人以及所在政黨進(jìn)行定義
In [2]:
months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6, 'JUL' : 7, 'AUG' : 8, 'SEP' : 9, 'OCT': 10, 'NOV': 11, 'DEC' : 12}of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick', 'Paul, Ron', 'Gingrich, Newt']parties = { 'Bachmann, Michelle': 'Republican', 'Romney, Mitt': 'Republican', 'Obama, Barack': 'Democrat', "Roemer, Charles E. 'Buddy' III": 'Reform', 'Pawlenty, Timothy': 'Republican', 'Johnson, Gary Earl': 'Libertarian', 'Paul, Ron': 'Republican', 'Santorum, Rick': 'Republican', 'Cain, Herman': 'Republican', 'Gingrich, Newt': 'Republican', 'McCotter, Thaddeus G': 'Republican', 'Huntsman, Jon': 'Republican', 'Perry, Rick': 'Republican' }
讀取文件
In [3]:
table = pd.read_csv('data/usa_election.txt')table.head()
C:\jupyter\lib\site-packages\IPython\core\interactiveshell.py:2785: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False. interactivity=interactivity, compiler=compiler, result=result)
Out[3]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166
In [8]:
#使用map函數(shù) 字典,新建一列各個(gè)候選人所在黨派partytable['party'] = table['cand_nm'].map(parties)table.head()
Out[8]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
In [10]:
#party這一列中有哪些元素table['party'].unique()
Out[10]:
array(['Republican', 'Democrat', 'Reform', 'Libertarian'], dtype=object)
In [ ]:
#使用value_counts()函數(shù),統(tǒng)計(jì)party列中各個(gè)元素出現(xiàn)次數(shù),value_counts()是Series中的,無參,返回一個(gè)帶有每個(gè)元素出現(xiàn)次數(shù)的Series
In [11]:
table['party'].value_counts()
Out[11]:
Democrat 292400Republican 237575Reform 5364Libertarian 702Name: party, dtype: int64
In [12]:
#使用groupby()函數(shù),查看各個(gè)黨派收到的政治獻(xiàn)金總數(shù)contb_receipt_amttable.groupby(by='party')['contb_receipt_amt'].sum()
Out[12]:
partyDemocrat 8.105758e 07Libertarian 4.132769e 05Reform 3.390338e 05Republican 1.192255e 08Name: contb_receipt_amt, dtype: float64
In [13]:
#查看具體每天各個(gè)黨派收到的政治獻(xiàn)金總數(shù)contb_receipt_amt 。使用groupby([多個(gè)分組參數(shù)])table.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()
Out[13]:
party contb_receipt_dtDemocrat 01-AUG-11 175281.00 01-DEC-11 651532.82 01-JAN-12 58098.80 01-JUL-11 165961.00 01-JUN-11 145459.00 01-MAY-11 82644.00 01-NOV-11 122529.87 01-OCT-11 148977.00 01-SEP-11 403297.62 02-AUG-11 164510.11 02-DEC-11 216056.96 02-JAN-12 89743.60 02-JUL-11 17105.00 02-JUN-11 422453.00 02-MAY-11 396675.00 02-NOV-11 147183.81 02-OCT-11 62605.62 02-SEP-11 137948.41 03-AUG-11 147053.02 03-DEC-11 81304.02 03-JAN-12 87406.97 03-JUL-11 5982.00 03-JUN-11 320176.20 03-MAY-11 261819.11 03-NOV-11 119304.56 03-OCT-11 363061.02 03-SEP-11 45598.00 04-APR-11 640235.12 04-AUG-11 598784.23 04-DEC-11 72795.10 ... Republican 29-AUG-11 941769.23 29-DEC-11 428501.42 29-JAN-11 750.00 29-JAN-12 75220.02 29-JUL-11 233423.35 29-JUN-11 1340704.29 29-MAR-11 38875.00 29-MAY-11 8363.20 29-NOV-11 407322.64 29-OCT-11 81924.01 29-SEP-11 1612794.52 30-APR-11 43004.80 30-AUG-11 915548.58 30-DEC-11 492470.45 30-JAN-12 255204.80 30-JUL-11 12249.04 30-JUN-11 2744932.63 30-MAR-11 50240.00 30-MAY-11 17803.60 30-NOV-11 809014.83 30-OCT-11 43913.16 30-SEP-11 4886331.76 31-AUG-11 1017735.02 31-DEC-11 1094376.72 31-JAN-11 6000.00 31-JAN-12 869890.41 31-JUL-11 12781.02 31-MAR-11 62475.00 31-MAY-11 301339.80 31-OCT-11 734601.83Name: contb_receipt_amt, Length: 1183, dtype: float64
In [14]:
def trasform_date(d): day,month,year = d.split('-') month = months[month] return "20" year '-' str(month) '-' day
In [17]:
#將表中日期格式轉(zhuǎn)換為'yyyy-mm-dd'。日期格式,通過函數(shù)加map方式進(jìn)行轉(zhuǎn)換table['contb_receipt_dt'] = table['contb_receipt_dt'].apply(trasform_date)
In [18]:
table.head()
Out[18]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 2011-6-23 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 2011-7-05 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 2011-8-01 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
In [19]:
#查看老兵(捐獻(xiàn)者職業(yè))DISABLED VETERAN主要支持誰(shuí) :查看老兵們捐贈(zèng)給誰(shuí)的錢最多table['contbr_occupation'] == 'DISABLED VETERAN'
Out[19]:
0 False1 False2 False3 False4 False5 False6 False7 False8 False9 False10 False11 False12 False13 False14 False15 False16 False17 False18 False19 False20 False21 False22 False23 False24 False25 False26 False27 False28 False29 False ... 536011 False536012 False536013 False536014 False536015 False536016 False536017 False536018 False536019 False536020 False536021 False536022 False536023 False536024 False536025 False536026 False536027 False536028 False536029 False536030 False536031 False536032 False536033 False536034 False536035 False536036 False536037 False536038 False536039 False536040 FalseName: contbr_occupation, Length: 536041, dtype: bool
In [21]:
old_bing_df = table.loc[table['contbr_occupation'] == 'DISABLED VETERAN']
In [22]:
old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
Out[22]:
cand_nmCain, Herman 300.00Obama, Barack 4205.00Paul, Ron 2425.49Santorum, Rick 250.00Name: contb_receipt_amt, dtype: float64
In [23]:
table['contb_receipt_amt'].max()
Out[23]:
1944042.43
In [24]:
#找出候選人的捐贈(zèng)者中,捐贈(zèng)金額最大的人的職業(yè)以及捐獻(xiàn)額 .通過query("查詢條件來查找捐獻(xiàn)人職業(yè)")table.query('contb_receipt_amt == 1944042.43')
Out[24]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
176127 C00431445 P80003338 Obama, Barack OBAMA VICTORY FUND 2012 - UNITEMIZED CHICAGO IL 60680 NaN NaN 1944042.43 2011-12-31 NaN X * SA18 763233 Democrat
來源:
這里整理了一份Python開發(fā)的學(xué)習(xí)路線,可按照這份大綱來安排學(xué)習(xí)計(jì)劃~
第一階段:專業(yè)核心基礎(chǔ)
階段目標(biāo):
1. 熟練掌握Python的開發(fā)環(huán)境與編程核心知識(shí)
2. 熟練運(yùn)用Python面向?qū)ο笾R(shí)進(jìn)行程序開發(fā)
3. 對(duì)Python的核心庫(kù)和組件有深入理解
4. 熟練應(yīng)用SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)常用操作
5. 熟練運(yùn)用Linux操作系統(tǒng)命令及環(huán)境配置
6. 熟練使用MySQL,掌握數(shù)據(jù)庫(kù)高級(jí)操作
7. 能綜合運(yùn)用所學(xué)知識(shí)完成項(xiàng)目
知識(shí)點(diǎn):
Python編程基礎(chǔ)、Python面向?qū)ο蟆ython高級(jí)進(jìn)階、MySQL數(shù)據(jù)庫(kù)、Linux操作系統(tǒng)。
1、Python編程基礎(chǔ),語(yǔ)法規(guī)則,函數(shù)與參數(shù),數(shù)據(jù)類型,模塊與包,文件IO,培養(yǎng)扎實(shí)的Python編程基本功,同時(shí)對(duì)Python核心對(duì)象和庫(kù)的編程有熟練的運(yùn)用。
2、Python面向?qū)ο螅诵膶?duì)象,異常處理,多線程,網(wǎng)絡(luò)編程,深入理解面向?qū)ο缶幊?,異常處理機(jī)制,多線程原理,網(wǎng)絡(luò)協(xié)議知識(shí),并熟練運(yùn)用于項(xiàng)目中。
3、類的原理,MetaClass,下劃線的特殊方法,遞歸,魔術(shù)方法,反射,迭代器,裝飾器,UnitTest,Mock。深入理解面向?qū)ο蟮讓釉?,掌握Python開發(fā)高級(jí)進(jìn)階技術(shù),理解單元測(cè)試技術(shù)。
4、數(shù)據(jù)庫(kù)知識(shí),范式,MySQL配置,命令,建庫(kù)建表,數(shù)據(jù)的增刪改查,約束,視圖,存儲(chǔ)過程,函數(shù),觸發(fā)器,事務(wù),游標(biāo),PDBC,深入理解數(shù)據(jù)庫(kù)管理系統(tǒng)通用知識(shí)及MySQL數(shù)據(jù)庫(kù)的使用與管理。為Python后臺(tái)開發(fā)打下堅(jiān)實(shí)基礎(chǔ)。
5、Linux安裝配置,文件目錄操作,VI命令,管理,用戶與權(quán)限,環(huán)境配置,Docker,Shell編程Linux作為一個(gè)主流的服務(wù)器操作系統(tǒng),是每一個(gè)開發(fā)工程師必須掌握的重點(diǎn)技術(shù),并且能夠熟練運(yùn)用。
第二階段:PythonWEB開發(fā)
階段目標(biāo):
1. 熟練掌握Web前端開發(fā)技術(shù),HTML,CSS,JavaScript及前端框架
2. 深入理解Web系統(tǒng)中的前后端交互過程與通信協(xié)議
3. 熟練運(yùn)用Web前端和Django和Flask等主流框架完成Web系統(tǒng)開發(fā)
4. 深入理解網(wǎng)絡(luò)協(xié)議,分布式,PDBC,AJAX,JSON等知識(shí)
5. 能夠運(yùn)用所學(xué)知識(shí)開發(fā)一個(gè)MiniWeb框架,掌握框架實(shí)現(xiàn)原理
6. 使用Web開發(fā)框架實(shí)現(xiàn)貫穿項(xiàng)目
知識(shí)點(diǎn):
Web前端編程、Web前端高級(jí)、Django開發(fā)框架、Flask開發(fā)框架、Web開發(fā)項(xiàng)目實(shí)戰(zhàn)。
1、Web頁(yè)面元素,布局,CSS樣式,盒模型,JavaScript,JQuery與Bootstrap掌握前端開發(fā)技術(shù),掌握J(rèn)Query與BootStrap前端開發(fā)框架,完成頁(yè)面布局與美化。
2、前端開發(fā)框架Vue,JSON數(shù)據(jù),網(wǎng)絡(luò)通信協(xié)議,Web服務(wù)器與前端交互熟練使用Vue框架,深入理解HTTP網(wǎng)絡(luò)協(xié)議,熟練使用Swagger,AJAX技術(shù)實(shí)現(xiàn)前后端交互。
3、自定義Web開發(fā)框架,Django框架的基本使用,Model屬性及后端配置,Cookie與Session,模板Templates,ORM數(shù)據(jù)模型,Redis二級(jí)緩存,RESTful,MVC模型掌握Django框架常用API,整合前端技術(shù),開發(fā)完整的WEB系統(tǒng)和框架。
4、Flask安裝配置,App對(duì)象的初始化和配置,視圖函數(shù)的路由,Request對(duì)象,Abort函數(shù),自定義錯(cuò)誤,視圖函數(shù)的返回值,F(xiàn)lask上下文和請(qǐng)求鉤子,模板,數(shù)據(jù)庫(kù)擴(kuò)展包Flask-Sqlalchemy,數(shù)據(jù)庫(kù)遷移擴(kuò)展包Flask-Migrate,郵件擴(kuò)展包Flask-Mail。掌握Flask框架的常用API,與Django框架的異同,并能獨(dú)立開發(fā)完整的WEB系統(tǒng)開發(fā)。
第三階段:爬蟲與數(shù)據(jù)分析
階段目標(biāo):
1. 熟練掌握爬蟲運(yùn)行原理及常見網(wǎng)絡(luò)抓包工具使用,能夠?qū)TTP及HTTPS協(xié)議進(jìn)行抓包分析
2. 熟練掌握各種常見的網(wǎng)頁(yè)結(jié)構(gòu)解析庫(kù)對(duì)抓取結(jié)果進(jìn)行解析和提取
3. 熟練掌握各種常見反爬機(jī)制及應(yīng)對(duì)策略,能夠針對(duì)常見的反爬措施進(jìn)行處理
4. 熟練使用商業(yè)爬蟲框架Scrapy編寫大型網(wǎng)絡(luò)爬蟲進(jìn)行分布式內(nèi)容爬取
5. 熟練掌握數(shù)據(jù)分析相關(guān)概念及工作流程
6. 熟練掌握主流數(shù)據(jù)分析工具Numpy、Pandas和Matplotlib的使用
7. 熟練掌握數(shù)據(jù)清洗、整理、格式轉(zhuǎn)換、數(shù)據(jù)分析報(bào)告編寫
8. 能夠綜合利用爬蟲爬取豆瓣網(wǎng)電影評(píng)論數(shù)據(jù)并完成數(shù)據(jù)分析全流程項(xiàng)目實(shí)戰(zhàn)
知識(shí)點(diǎn):
網(wǎng)絡(luò)爬蟲開發(fā)、數(shù)據(jù)分析之Numpy、數(shù)據(jù)分析之Pandas。
1、爬蟲頁(yè)面爬取原理、爬取流程、頁(yè)面解析工具LXML,Beautifulfoup,正則表達(dá)式,代理池編寫和架構(gòu)、常見反爬措施及解決方案、爬蟲框架結(jié)構(gòu)、商業(yè)爬蟲框架Scrapy,基于對(duì)爬蟲爬取原理、網(wǎng)站數(shù)據(jù)爬取流程及網(wǎng)絡(luò)協(xié)議的分析和了解,掌握網(wǎng)頁(yè)解析工具的使用,能夠靈活應(yīng)對(duì)大部分網(wǎng)站的反爬策略,具備獨(dú)立完成爬蟲框架的編寫能力和熟練應(yīng)用大型商業(yè)爬蟲框架編寫分布式爬蟲的能力。
2、Numpy中的ndarray數(shù)據(jù)結(jié)構(gòu)特點(diǎn)、numpy所支持的數(shù)據(jù)類型、自帶的數(shù)組創(chuàng)建方法、算術(shù)運(yùn)算符、矩陣積、自增和自減、通用函數(shù)和聚合函數(shù)、切片索引、ndarray的向量化和廣播機(jī)制,熟悉數(shù)據(jù)分析三大利器之一Numpy的常見使用,熟悉ndarray數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)和常見操作,掌握針對(duì)不同維度的ndarray數(shù)組的分片、索引、矩陣運(yùn)算等操作。
3、Pandas里面的三大數(shù)據(jù)結(jié)構(gòu),包括Dataframe、Series和Index對(duì)象的基本概念和使用,索引對(duì)象的更換及刪除索引、算術(shù)和數(shù)據(jù)對(duì)齊方法,數(shù)據(jù)清洗和數(shù)據(jù)規(guī)整、結(jié)構(gòu)轉(zhuǎn)換,熟悉數(shù)據(jù)分析三大利器之一Pandas的常見使用,熟悉Pandas中三大數(shù)據(jù)對(duì)象的使用方法,能夠使用Pandas完成數(shù)據(jù)分析中最重要的數(shù)據(jù)清洗、格式轉(zhuǎn)換和數(shù)據(jù)規(guī)整工作、Pandas對(duì)文件的讀取和操作方法。
4、matplotlib三層結(jié)構(gòu)體系、各種常見圖表類型折線圖、柱狀圖、堆積柱狀圖、餅圖的繪制、圖例、文本、標(biāo)線的添加、可視化文件的保存,熟悉數(shù)據(jù)分析三大利器之一Matplotlib的常見使用,熟悉Matplotlib的三層結(jié)構(gòu),能夠熟練使用Matplotlib繪制各種常見的數(shù)據(jù)分析圖表。能夠綜合利用課程中所講的各種數(shù)據(jù)分析和可視化工具完成股票市場(chǎng)數(shù)據(jù)分析和預(yù)測(cè)、共享單車用戶群里數(shù)據(jù)分析、全球幸福指數(shù)數(shù)據(jù)分析等項(xiàng)目的全程實(shí)戰(zhàn)。
第四階段:機(jī)器學(xué)習(xí)與人工智能
階段目標(biāo):
1. 理解機(jī)器學(xué)習(xí)相關(guān)的基本概念及系統(tǒng)處理流程
2. 能夠熟練應(yīng)用各種常見的機(jī)器學(xué)習(xí)模型解決監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)訓(xùn)練和測(cè)試問題,解決回歸、分類問題
3. 熟練掌握常見的分類算法和回歸算法模型,如KNN、決策樹、隨機(jī)森林、K-Means等
4. 掌握卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像識(shí)別、自然語(yǔ)言識(shí)別問題的處理方式,熟悉深度學(xué)習(xí)框架TF里面的張量、會(huì)話、梯度優(yōu)化模型等
5. 掌握深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行機(jī)制,能夠自定義卷積層、池化層、FC層完成圖像識(shí)別、手寫字體識(shí)別、驗(yàn)證碼識(shí)別等常規(guī)深度學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目
知識(shí)點(diǎn):
1、機(jī)器學(xué)習(xí)常見算法、sklearn數(shù)據(jù)集的使用、字典特征抽取、文本特征抽取、歸一化、標(biāo)準(zhǔn)化、數(shù)據(jù)主成分分析PCA、KNN算法、決策樹模型、隨機(jī)森林、線性回歸及邏輯回歸模型和算法。熟悉機(jī)器學(xué)習(xí)相關(guān)基礎(chǔ)概念,熟練掌握機(jī)器學(xué)習(xí)基本工作流程,熟悉特征工程、能夠使用各種常見機(jī)器學(xué)習(xí)算法模型解決分類、回歸、聚類等問題。
2、Tensorflow相關(guān)的基本概念,TF數(shù)據(jù)流圖、會(huì)話、張量、tensorboard可視化、張量修改、TF文件讀取、tensorflow playround使用、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、卷積計(jì)算、激活函數(shù)計(jì)算、池化層設(shè)計(jì),掌握機(jī)器學(xué)習(xí)和深度學(xué)習(xí)之前的區(qū)別和練習(xí),熟練掌握深度學(xué)習(xí)基本工作流程,熟練掌握神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)層次及特點(diǎn),掌握張量、圖結(jié)構(gòu)、OP對(duì)象等的使用,熟悉輸入層、卷積層、池化層和全連接層的設(shè)計(jì),完成驗(yàn)證碼識(shí)別、圖像識(shí)別、手寫輸入識(shí)別等常見深度學(xué)習(xí)項(xiàng)目全程實(shí)戰(zhàn)。
很多時(shí)候,我們查詢數(shù)據(jù)的時(shí)候都不會(huì)把明細(xì)數(shù)據(jù)查詢出來,那樣一般意義也不大。更多的時(shí)候是根據(jù)業(yè)務(wù)需求,把數(shù)據(jù)聚合成業(yè)務(wù)能直接使用的數(shù)據(jù)。MYSQL中有5個(gè)聚合函數(shù),如下面5個(gè),用的最多的還是count和sum,下面分別介紹一下用法。
【COUNT】
在MySQL中,COUNT()函數(shù)統(tǒng)計(jì)數(shù)據(jù)表中包含的記錄行的總數(shù),或者根據(jù)查詢結(jié)果返回列中包含的數(shù)據(jù)行數(shù),使用方法有以下兩種:
求order表中,查詢一共有多少條訂單數(shù),SQL語(yǔ)句如下↓
【SUM】
在MySQL中,SUM()是一個(gè)求總和的函數(shù),返回指定列值的總和。
求order表中所有產(chǎn)品銷售數(shù)量,SQL語(yǔ)句如下↓
【AVG】
在MySQL中,AVG()函數(shù)通過計(jì)算返回的行數(shù)和每一行數(shù)據(jù)的和,求得指定列數(shù)據(jù)的平均值。
求order表中,2021年所有產(chǎn)品的平均單價(jià),SQL語(yǔ)句如下↓
【MAX/MIN】
在MySQL中,MAX()函數(shù)是用來返回指定列中的最大值。
求order表中,查詢最大的單價(jià)價(jià)格,SQL預(yù)計(jì)如下↓
在MySQL中,MIN()函數(shù)是用來返回指定列中的最小值。
求order表中,查詢最小的單價(jià)價(jià)格,SQL預(yù)計(jì)如下↓
【結(jié)合GROUP BY】
正常情況下,聚合函數(shù)都是搭配著GROUP BY來使用的。可以是按省份聚合、產(chǎn)品聚合、時(shí)間聚合等等。下面演示每個(gè)品牌最低單價(jià)的聚合,其他幾個(gè)聚合函數(shù)使用方式一樣,SQL語(yǔ)句如下↓
還可以用ORDER BY排個(gè)序,求每個(gè)品牌累計(jì)銷售價(jià)格的SQL語(yǔ)句,從高到低排序↓
End
◆ PowerBI開場(chǎng)白
◆ Python高德地圖可視化
◆ Python不規(guī)則條形圖
前言分組原理
核心:
1.不論分組鍵是數(shù)組、列表、字典、Series、函數(shù),只要其與待分組變量的軸長(zhǎng)度一致都可以傳入groupby進(jìn)行分組。
2.默認(rèn)axis=0按行分組,可指定axis=1對(duì)列分組。
對(duì)數(shù)據(jù)進(jìn)行分組操作的過程可以概括為:split-apply-combine三步:
1.按照鍵值(key)或者分組變量將數(shù)據(jù)分組。
2.對(duì)于每組應(yīng)用我們的函數(shù),這一步非常靈活,可以是python自帶函數(shù),可以是我們自己編寫的函數(shù)。
3.將函數(shù)計(jì)算后的結(jié)果聚合。
1 分組模式及其對(duì)象
1.1 分組的一般模式
三個(gè)要素:分組依據(jù)、數(shù)據(jù)來源、操作及其返回結(jié)果
df.groupby(分組依據(jù))[數(shù)據(jù)來源].使用操作
1.2 分組依據(jù)的本質(zhì)
1.3Groupby 對(duì)象
通過 ngroups 屬性,可以訪問分為了多少組:
通過 groups 屬性,可以返回從 組名映射到 組索引列表的字典:
當(dāng) size 作為 DataFrame 的屬性時(shí),返回的是表長(zhǎng)乘以表寬的大小,但在 groupby 對(duì)象上表示統(tǒng)計(jì)每個(gè)組的 元素個(gè)數(shù):
通過 get_group 方法可以直接獲取所在組對(duì)應(yīng)的行,此時(shí)必須知道組的具體名字:
1.4 分組的三大操作
分組的三大操作:聚合、變換和過濾
2.聚合函數(shù)
2.1內(nèi)置聚合函數(shù)
包括如下函數(shù): max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod
2.2agg 方法
【a】使用多個(gè)函數(shù)
當(dāng)使用多個(gè)聚合函數(shù)時(shí),需要用列表的形式把內(nèi)置聚合函數(shù)的對(duì)應(yīng)的字符串傳入,先前提到的所有字符串都是合法的。
【b】對(duì)特定的列使用特定的聚合函數(shù)
對(duì)于方法和列的特殊對(duì)應(yīng),可以通過構(gòu)造字典傳入 agg 中實(shí)現(xiàn),其中字典以列名為鍵,以聚合字符串或字符串列表為值。
【c】使用自定義函數(shù)
在 agg 中可以使用具體的自定義函數(shù),需要注意傳入函數(shù)的參數(shù)是之前數(shù)據(jù)源中的列,逐列進(jìn)行計(jì)算
【d】聚合結(jié)果重命名 如果想要對(duì)結(jié)果進(jìn)行重命名,只需要將上述函數(shù)的位置改寫成元組,元組的第一個(gè)元素為新的名字,第二個(gè)位置為原來的函數(shù),包括聚合字符串和自定義函數(shù)
3 變換和過濾
3.1 變換函數(shù)與 transform 方法
變 換 函 數(shù) 的 返 回 值 為 同 長(zhǎng) 度 的 序 列, 最 常 用 的 內(nèi) 置 變 換 函 數(shù) 是 累 計(jì) 函 數(shù):cum- count/cumsum/cumprod/cummax/cummin ,它們的使用方式和聚合函數(shù)類似,只不過完成的是組內(nèi) 累計(jì)操作。
3.2 組索引與過濾
過濾在分組中是對(duì)于組的過濾,而索引是對(duì)于行的過濾
組過濾作為行過濾的推廣,指的是如果對(duì)一個(gè)組的全體所在行進(jìn)行統(tǒng)計(jì)的結(jié)果返回 True 則會(huì)被保留,F(xiàn)alse 則該組會(huì)被過濾,最后把所有未被過濾的組其對(duì)應(yīng)的所在行拼接起來作為 DataFrame 返回。
在 groupby 對(duì)象中,定義了 filter 方法進(jìn)行組的篩選,其中自定義函數(shù)的輸入?yún)?shù)為數(shù)據(jù)源構(gòu)成的 DataFrame 本身,在之前例子中定義的 groupby 對(duì)象中,傳入的就是 df[['Height', 'Weight']] ,因此所有表方法和屬性 都可以在自定義函數(shù)中相應(yīng)地使用,同時(shí)只需保證自定義函數(shù)的返回為布爾值即可。
4 跨列分組
4.1 apply 的引入
4.2 apply 的使用
在設(shè)計(jì)上,apply 的自定義函數(shù)傳入?yún)?shù)與 filter 完全一致,只不過后者只允許返回布爾值
【a】標(biāo)量情況:結(jié)果得到的是 Series ,索引與 agg 的結(jié)果一致
【b】Series 情況:得到的是 DataFrame ,行索引與標(biāo)量情況一致,列索引為 Series 的索引
【c】DataFrame 情況:得到的是 DataFrame ,行索引最內(nèi)層在每個(gè)組原先 agg 的結(jié)果索引上,再加一層返 回的 DataFrame 行索引,同時(shí)分組結(jié)果 DataFrame 的列索引和返回的 DataFrame 列索引一致
#encoding=utf-8
def?getRows():
names?=?["A",?"B"]
rows?=?[
[1,?'m'],
[2,?'m'],
[3,?'q'],
[3,?'q'],
[2,?'q'],
[1,?'s'],
[4,?'s'],
[2,?'s'],
[1,?'s'],
[3,?'m']
]
rs?=?[]
for?row?in?rows:
rs.append(dict(zip(names,?row)))
return?rs
def?count():
rs?=?getRows()
#?取所有B=m的行
rs?=?[r?for?r?in?rs?if?r["B"]?==?'m']
rs?=?sorted(rs,?key=lambda?r:?r["B"])
#?計(jì)算數(shù)量
result?=?{}
for?r?in?rs:
if?r["A"]?in?result:
result[r["A"]]?+=?1
else:
result[r["A"]]?=?1
return?result
print?count()
#encoding=utf-8
def?getRows():
names?=?["A",?"B"]
rows?=?[
[1,?'m'],
[2,?'m'],
[3,?'q'],
[3,?'q'],
[2,?'q'],
[1,?'s'],
[4,?'s'],
[2,?'s'],
[1,?'s'],
[3,?'m']
]
rs?=?[]
for?row?in?rows:
rs.append(dict(zip(names,?row)))
return?rs
def?count():
rs?=?getRows()
#?取所有B=m的行
rs?=?[r?for?r?in?rs?if?r["B"]?==?'m']
rs?=?sorted(rs,?key=lambda?r:?r["B"])
#?計(jì)算數(shù)量
result?=?{}
for?r?in?rs:
if?r["A"]?in?result:
result[r["A"]]?+=?1
else:
result[r["A"]]?=?1
return?result
print?count()