大家好,我是大鵬,城市數(shù)據(jù)團(tuán)聯(lián)合發(fā)起人,致力于Python數(shù)據(jù)分析、數(shù)據(jù)可視化的應(yīng)用與教學(xué)。 和很多同學(xué)接觸過程中,我發(fā)現(xiàn)自學(xué)Python數(shù)據(jù)分析的一個(gè)難點(diǎn)是資料繁多,過于復(fù)雜。大部分網(wǎng)上的資料總是從Python語法教起,夾雜著大量Python開發(fā)的知識(shí)點(diǎn),花了很多時(shí)間卻始終云里霧里,不知道哪些知識(shí)才是真正有用的。本來以為上手就能寫爬蟲出圖,卻在看基礎(chǔ)的過程中消耗了一周又一周,以至于很多勵(lì)志學(xué)習(xí)Python的小伙伴犧牲在了入門的前一步。 于是,我總結(jié)了以下一篇干貨,來幫助大家理清思路,提高學(xué)習(xí)效率。總共分為三大部分:做Python數(shù)據(jù)分析必知的語法,如何實(shí)現(xiàn)爬蟲,怎么做數(shù)據(jù)分析。 1.必須知道的兩組Python基礎(chǔ)術(shù)語 A.變量和賦值 Python可以直接定義變量名字并進(jìn)行賦值的,例如我們寫出a = 4時(shí),Python解釋器干了兩件事情:
用一張示意圖表示Python變量和賦值的重點(diǎn): 例如下圖代碼,“=”的作用就是賦值,同時(shí)Python會(huì)自動(dòng)識(shí)別數(shù)據(jù)類型: a=4 #整型數(shù)據(jù) 請(qǐng)閱讀代碼塊里的代碼和注釋,你會(huì)發(fā)現(xiàn)Python是及其易讀易懂的。B.數(shù)據(jù)類型 在初級(jí)的數(shù)據(jù)分析過程中,有三種數(shù)據(jù)類型是很常見的:
它們分別是這么寫的: 列表(list): #列表
字典(dict): #字典
dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的,也就是說,'章澤天'并非是在'劉強(qiáng)東'的后面。 DataFrame: DataFrame可以簡單理解為excel里的表格格式。導(dǎo)入pandas包后,字典和列表都可以轉(zhuǎn)化為DataFrame,以上面的字典為例,轉(zhuǎn)化為DataFrame是這樣的: import pandas as pd df=pd.DataFrame.from_dict(zidian,orient='index',columns=['age'])#注意DataFrame的D和F是大寫 和excel一樣,DataFrame的任何一列或任何一行都可以單獨(dú)選出進(jìn)行分析。 以上三種數(shù)據(jù)類型是python數(shù)據(jù)分析中用的最多的類型,基礎(chǔ)語法到此結(jié)束,接下來就可以著手寫一些函數(shù)計(jì)算數(shù)據(jù)了。 2.從Python爬蟲學(xué)循環(huán)函數(shù) 掌握了以上基本語法概念,我們就足以開始學(xué)習(xí)一些有趣的函數(shù)。我們以爬蟲中繞不開的遍歷url為例,講講大家最難理解的循環(huán)函數(shù)for的用法: A.for函數(shù) for函數(shù)是一個(gè)常見的循環(huán)函數(shù),先從簡單代碼理解for函數(shù)的用途:
因?yàn)閐ict的存儲(chǔ)不是按照list的方式順序排列,所以,迭代出的結(jié)果順序很可能不是每次都一樣。默認(rèn)情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時(shí)#迭代key和value,可以用for k, v in d.items() 可以看到,字典里的人名被一一打印出來了。for 函數(shù)的作用就是用于遍歷數(shù)據(jù)。掌握for函數(shù),可以說是真正入門了Python函數(shù)。 B.爬蟲和循環(huán) for函數(shù)在書寫Python爬蟲中經(jīng)常被應(yīng)用,因?yàn)?strong>爬蟲經(jīng)常需要遍歷每一個(gè)網(wǎng)頁,以獲取信息,所以構(gòu)建完整而正確的網(wǎng)頁鏈接十分關(guān)鍵。以某票房數(shù)據(jù)網(wǎng)為例,他的網(wǎng)站信息長這樣: 該網(wǎng)站的周票房json數(shù)據(jù)地址可以通過抓包工具找到,網(wǎng)址為http://www./BoxOffice/getWeekInfoData?sdate=20190114 仔細(xì)觀察,該網(wǎng)站不同日期的票房數(shù)據(jù)網(wǎng)址(url)只有后面的日期在變化,訪問不同的網(wǎng)址(url)就可以看到不同日期下的票房數(shù)據(jù): 我們要做的是,遍歷每一個(gè)日期下的網(wǎng)址,用Python代碼把數(shù)據(jù)爬下來。此時(shí)for函數(shù)就派上用場了,使用它我們可以快速生成多個(gè)符合條件的網(wǎng)址: import pandas as pd 滑動(dòng)滑塊可以看到完整代碼和中間的注釋。 為了方便理解,我給大家畫了一個(gè)for函數(shù)的遍歷過程示意圖: 此處省略掉后續(xù)爬取過程,相關(guān)爬蟲代碼見文末。我們使用爬蟲爬取了5800+條數(shù)據(jù),包含20個(gè)字段,時(shí)間囊括了從2008年1月開始至2019年2月十一年期間的單周票房、累計(jì)票房、觀影人次、場均人次、場均票價(jià)、場次環(huán)比變化等信息。 3.Python怎么實(shí)現(xiàn)數(shù)據(jù)分析? 除了爬蟲,分析數(shù)據(jù)也是Python的重要用途之一,Excel能做的事,Python究竟怎么實(shí)現(xiàn)呢;Excel不能做的事,Python又是否能實(shí)現(xiàn)呢?利用電影票房數(shù)據(jù),我們分別舉一個(gè)例子說明: A.Python分析 在做好數(shù)據(jù)采集和導(dǎo)入后,選擇字段進(jìn)行初步分析可以說是數(shù)據(jù)分析的必經(jīng)之路。在Dataframe數(shù)據(jù)格式的幫助下,這個(gè)步驟變得很簡單。 比如當(dāng)我們想看單周票房第一的排名分別都是哪些電影時(shí),可以使用pandas工具庫中常用的方法,篩選出周票房為第一名的所有數(shù)據(jù),并保留相同電影中周票房最高的數(shù)據(jù)進(jìn)行分析整理:
9行代碼,我們完成了Excel里的透視表、拖動(dòng)、排序等鼠標(biāo)點(diǎn)擊動(dòng)作。最后再用Python中的可視化包matplotlib,快速出圖: B.函數(shù)化分析 以上是一個(gè)簡單的統(tǒng)計(jì)分析過程。接下來就講講Excel基礎(chǔ)功能不能做的事——自定義函數(shù)提效。觀察數(shù)據(jù)可以發(fā)現(xiàn),數(shù)據(jù)中記錄了周票房和總票房的排名,那么剛剛計(jì)算了周票房排名的代碼,還能不能復(fù)用做一張總票房分析呢? 當(dāng)然可以,只要使用def函數(shù)和剛剛寫好的代碼建立自定義函數(shù),并說明函數(shù)規(guī)則即可: def pypic(pf): 定義函數(shù)后,批量出圖so easy: 學(xué)會(huì)函數(shù)的構(gòu)建,一個(gè)數(shù)據(jù)分析師才算真正能夠告別Excel的鼠標(biāo)點(diǎn)擊模式,邁入高效分析的領(lǐng)域。 4.光看不練是永遠(yuǎn)不能入門的 如果只有一小時(shí)學(xué)習(xí),以上就是大家一定要掌握的Python知識(shí)點(diǎn)。光看不練永遠(yuǎn)都會(huì)是門外漢,如果你有興趣學(xué)習(xí)Python數(shù)據(jù)分析,卻在過程中感到困惑,歡迎來參加我在網(wǎng)易云課堂的免費(fèi)直播,每晚一個(gè)主題,有學(xué)有練,讓你快速入門Python數(shù)據(jù)分析: 不間斷直播陪你從入門到精通 掃碼即可預(yù)約免費(fèi)直播席位 5.7 周二 20:00 《快速入門:搞定初學(xué)Python的十大易錯(cuò)點(diǎn)》 1. python基礎(chǔ)語法學(xué)習(xí)路徑 2. 十大易錯(cuò)點(diǎn)分別是哪些? 3. 用python實(shí)現(xiàn)第一個(gè)數(shù)據(jù)爬蟲 5.8 周三 20:00 《告別加班:用Pandas代替Excel快速處理數(shù)據(jù)》 1. 如何用Python快速處理數(shù)據(jù)? 2. 初學(xué)者使用pandas最容易犯的錯(cuò)誤 3. Pandas套路總結(jié) 5.9 周四 20:00 《窮人和富人就差1%的努力:用隨機(jī)數(shù)模擬社會(huì)財(cái)富分配》 1. 什么是蒙特卡羅思想 2. 隨機(jī)數(shù)模擬的前提:準(zhǔn)確判斷數(shù)據(jù)分布 3. 模型構(gòu)建,模擬社會(huì)財(cái)富分配 5.13 周一 20:00 《Python數(shù)據(jù)可視化利器:pyecharts!》 1. 為什么需要交互式圖表來做數(shù)據(jù)表達(dá)? 2. pyecharts基礎(chǔ)操作 3. 數(shù)據(jù)可視化技能圖譜詳解 5.14 周二 20:00 《1小時(shí)入門python爬蟲:當(dāng)數(shù)據(jù)分析師就該自己爬數(shù)據(jù)!》 1. 快讀讀懂網(wǎng)頁結(jié)構(gòu) 2. 頁面解析及標(biāo)簽提取 3. 實(shí)現(xiàn)第1個(gè)數(shù)據(jù)爬蟲 5.15 周三 20:00 《用數(shù)據(jù)做攻略:找到一個(gè)城市最有趣的地方》 1.數(shù)據(jù)爬蟲構(gòu)建 2.字段篩選與數(shù)據(jù)清洗 3.篩選機(jī)制及評(píng)價(jià)方法 4.空間數(shù)據(jù)可視化表達(dá)結(jié)果 5.16 周四 20:00 《人口數(shù)據(jù):揭秘一年來上海工作的人員流動(dòng)情況》 1.全國人口遷徙數(shù)據(jù)采集 2.數(shù)據(jù)整理與核心城市篩選 3.數(shù)據(jù)表達(dá):OD圖制作方法與技巧 贈(zèng)送免費(fèi)課程 課程大綱 1. Python語言入門 2. 每月凈收入模型構(gòu)建 3. 每月支出模型構(gòu)建 4. 不同情況下的花唄還款場景模擬 5. 負(fù)債積累問題 6. 如何用圖表講好一個(gè)故事?(彩蛋) 6G入門資料 本文所示票房數(shù)據(jù)爬取和分析代碼以及中國票房數(shù)據(jù)源數(shù)據(jù),已經(jīng)放在百度網(wǎng)盤6g資料包內(nèi) 福利領(lǐng)取方式 所有以上福利,掃碼添加網(wǎng)易云課堂小助手即可獲得 微信號(hào):neteasepython 席位有限,先到先得 |
|