成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 從爬蟲到數據分析

大數據 數據分析 后端
大家好,我是大鵬,城市數據團聯合發起人,致力于Python數據分析、數據可視化的應用與教學。于是,我總結了以下一篇干貨,來幫助大家理清思路,提高學習效率。總共分為三大部分:做Python數據分析必知的語法,如何實現爬蟲,怎么做數據分析。

大家好,我是大鵬,城市數據團聯合發起人,致力于Python數據分析、數據可視化的應用與教學。

和很多同學接觸過程中,我發現自學Python數據分析的一個難點是資料繁多,過于復雜。大部分網上的資料總是從Python語法教起,夾雜著大量Python開發的知識點,花了很多時間卻始終云里霧里,不知道哪些知識才是真正有用的。本來以為上手就能寫爬蟲出圖,卻在看基礎的過程中消耗了一周又一周,以至于很多勵志學習Python的小伙伴犧牲在了入門的前一步。

[[265310]]

于是,我總結了以下一篇干貨,來幫助大家理清思路,提高學習效率。總共分為三大部分:做Python數據分析必知的語法,如何實現爬蟲,怎么做數據分析。

1.必須知道的兩組Python基礎術語

A.變量和賦值

Python可以直接定義變量名字并進行賦值的,例如我們寫出a = 4時,Python解釋器干了兩件事情:

  • 在內存中創建了一個值為4的整型數據
  • 在內存中創建了一個名為a的變量,并把它指向4

用一張示意圖表示Python變量和賦值的重點:

Python 從爬蟲到數據分析

例如下圖代碼,“=”的作用就是賦值,同時Python會自動識別數據類型:

  1. a=4 #整型數據 
  2. b=2 #整型數據 
  3. c=“4” #字符串數據 
  4. d=“2” #字符串數據 
  5.  
  6. print(“a+b結果為”,a+b)#兩個整數相加,結果是6 
  7. print(“c+d結果為”,c+d)#兩個文本合并,結果是文本“42” 
  8.  
  9. #以下為運行結果 
  10. >>>a+b結果為 6 
  11. >>>c+d結果為 42 

B.數據類型

在初級的數據分析過程中,有三種數據類型是很常見的:

  • 列表list(Python內置)
  • 字典dic(Python內置)
  • DataFrame(工具包pandas下的數據類型,需要import pandas才能調用)

它們分別是這么寫的:

列表(list):

  1. #列表 
  2. liebiao=[1,2.223,-3,'劉強東','章澤天','周杰倫','昆凌',['微博','B站','抖音']] 

list是一種有序的集合,里面的元素可以是之前提到的任何一種數據格式和數據類型(整型、浮點、列表……),并可以隨時指定順序添加其中的元素,其形式是:

  1. #ist是一個可變的有序表,所以,可以往list中追加元素到末尾: 
  2. liebiao.append('瘦'
  3. print(liebiao) 
  4. #結果1 
  5. >>>[1, 2.223, -3, '劉強東''章澤天''周杰倫''昆凌', ['微博''B站''抖音'], '瘦'
  6.  
  7. #也可以把元素插入到指定的位置,比如索引號為5的位置,插入“胖”這個元素: 
  8. liebiao.insert(5, '胖'
  9. print(liebiao) 
  10. #結果2 
  11. >>>[1, 2.223, -3, '劉強東''章澤天''胖''周杰倫''昆凌', ['微博''B站''抖音'], '瘦'

字典(dict):

  1. #字典 
  2. zidian={'劉強東':'46','章澤天':'36','周杰倫':'40','昆凌':'26'

字典使用鍵-值(key-value)存儲,無序,具有極快的查找速度。以上面的字典為例,想要快速知道周杰倫的年齡,就可以這么寫:

  1. zidian['周杰倫'
  2. >>>'40' 

dict內部存放的順序和key放入的順序是沒有關系的,也就是說,"章澤天"并非是在"劉強東"的后面。

DataFrame:

DataFrame可以簡單理解為Excel里的表格格式。導入pandas包后,字典和列表都可以轉化為DataFrame,以上面的字典為例,轉化為DataFrame是這樣的:

  1. import pandas as pd 
  2.  
  3. df=pd.DataFrame.from_dict(zidian,orient='index',columns=['age'])#注意DataFrame的D和F是大寫 
  4. df=df.reset_index().rename(columns={'index':'name'})#給姓名加上字段名  

Python 從爬蟲到數據分析

和excel一樣,DataFrame的任何一列或任何一行都可以單獨選出進行分析。

以上三種數據類型是python數據分析中用的最多的類型,基礎語法到此結束,接下來就可以著手寫一些函數計算數據了。

2.從Python爬蟲學循環函數

掌握了以上基本語法概念,我們就足以開始學習一些有趣的函數。我們以爬蟲中繞不開的遍歷url為例,講講大家最難理解的循環函數for的用法:

A.for函數

for函數是一個常見的循環函數,先從簡單代碼理解for函數的用途:

  1. zidian={'劉強東':'46','章澤天':'36','周杰倫':'40','昆凌':'26'
  2. for key in zidian: 
  3.         print(key
  4. >>> 
  5. 劉強東 
  6. 章澤天 
  7. 周杰倫 
  8. 昆凌 

因為dict的存儲不是按照list的方式順序排列,所以,迭代出的結果順序很可能不是每次都一樣。默認情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時#迭代key和value,可以用for k, v in d.items()

可以看到,字典里的人名被一一打印出來了。for 函數的作用就是用于遍歷數據。掌握for函數,可以說是真正入門了Python函數。

B.爬蟲和循環

for函數在書寫Python爬蟲中經常被應用,因為爬蟲經常需要遍歷每一個網頁,以獲取信息,所以構建完整而正確的網頁鏈接十分關鍵。以某票房數據網為例,他的網站信息長這樣:

Python 從爬蟲到數據分析

 

Python 從爬蟲到數據分析

該網站的周票房json數據地址可以通過抓包工具找到,網址為http://www.cbooo.cn/BoxOffice/getWeekInfoData?sdate=20190114

仔細觀察,該網站不同日期的票房數據網址(url)只有后面的日期在變化,訪問不同的網址(url)就可以看到不同日期下的票房數據:

Python 從爬蟲到數據分析

我們要做的是,遍歷每一個日期下的網址,用Python代碼把數據爬下來。此時for函數就派上用場了,使用它我們可以快速生成多個符合條件的網址:

  1. import pandas as pd 
  2.  
  3. url_df = pd.DataFrame({'urls':['http://www.cbooo.cn/BoxOffice/getWeekInfoData?sdate=' for i in range(5)],'date' :pd.date_range(20190114,freq = 'W-MON',periods = 5)}) 
  4.  
  5. ''
  6. 將網址相同的部分生成5次,并利用pandas的時間序列功能生成5個星期一對應的日期。 
  7. 其中用到了***部分提供的多個數據類型: 
  8. range(5)屬于列表, 
  9. 'urls':[]屬于字典, 
  10. pd.dataframe屬于dataframe 
  11. ''
  12. url_df['urls'] = url_df['urls'] + url_df['date'].astype('str'

滑動滑塊可以看到完整代碼和中間的注釋。

Python 從爬蟲到數據分析

為了方便理解,我給大家畫了一個for函數的遍歷過程示意圖:

Python 從爬蟲到數據分析

此處省略掉后續爬取過程,相關爬蟲代碼見文末。我們使用爬蟲爬取了5800+條數據,包含20個字段,時間囊括了從2008年1月開始至2019年2月十一年期間的單周票房、累計票房、觀影人次、場均人次、場均票價、場次環比變化等信息。

3.Python怎么實現數據分析?

除了爬蟲,分析數據也是Python的重要用途之一,Excel能做的事,Python究竟怎么實現呢;Excel不能做的事,Python又是否能實現呢?利用電影票房數據,我們分別舉一個例子說明:

A.Python分析

在做好數據采集和導入后,選擇字段進行初步分析可以說是數據分析的必經之路。在Dataframe數據格式的幫助下,這個步驟變得很簡單。

比如當我們想看單周票房***的排名分別都是哪些電影時,可以使用pandas工具庫中常用的方法,篩選出周票房為***名的所有數據,并保留相同電影中周票房***的數據進行分析整理:

  1. import pandas as pd 
  2. data = pd.read_csv('中國票房數據爬取測試20071-20192.csv',engine='python'
  3. data[data['平均上座人數']>20]['電影名'
  4. #計算周票房***隨時間變化的結果,導入數據,并選擇平均上座人數在20以上的電影為有效數據 
  5.  
  6. dataTop1_week = data[data['排名']==1][['電影名','周票房']] 
  7. #取出周票房排名為***名的所有數據,并保留“電影名”和“周票房”兩列數據 
  8.  
  9. dataTop1_week = dataTop1_week.groupby('電影名').max()['周票房'].reset_index() 
  10. #用“電影名”來分組數據,相同電影連續霸榜的選擇***的周票房保留,其他數據刪除 
  11.  
  12. dataTop1_week = dataTop1_week.sort_values(by='周票房',ascending=False
  13. #將數據按照“周票房”進行降序排序 
  14.  
  15. dataTop1_week.index = dataTop1_week['電影名'
  16. del dataTop1_week['電影名'
  17. #整理index列,使之變為電影名,并刪掉原來的電影名列 
  18.  
  19. dataTop1_week 
  20. #查看數據 

 

Python 從爬蟲到數據分析

9行代碼,我們完成了Excel里的透視表、拖動、排序等鼠標點擊動作。***再用Python中的可視化包matplotlib,快速出圖:

Python 從爬蟲到數據分析

 

Python 從爬蟲到數據分析

B.函數化分析

以上是一個簡單的統計分析過程。接下來就講講Excel基礎功能不能做的事——自定義函數提效。觀察數據可以發現,數據中記錄了周票房和總票房的排名,那么剛剛計算了周票房排名的代碼,還能不能復用做一張總票房分析呢?

Python 從爬蟲到數據分析

當然可以,只要使用def函數和剛剛寫好的代碼建立自定義函數,并說明函數規則即可:

  1. def pypic(pf): 
  2.     #定義一個pypic函數,變量是pf 
  3.     dataTop1_sum = data[['電影名',pf]] 
  4.     #取出源數據中,列名為“電影名”和pf兩列數據 
  5.  
  6.     dataTop1_sum = dataTop1_sum.groupby('電影名').max()[pf].reset_index() 
  7.     #用“電影名”來分組數據,相同電影連續霸榜的選擇***的pf票房保留,其他數據刪除 
  8.  
  9.     dataTop1_sum = dataTop1_sum.sort_values(by=pf,ascending=False
  10.     #將數據按照pf進行降序排序 
  11.  
  12.     dataTop1_sum.index = dataTop1_sum['電影名'
  13.     del dataTop1_sum['電影名'
  14.     #整理index列,使之變為電影名,并刪掉原來的電影名列 
  15.  
  16.     dataTop1_sum[:20].iloc[::-1].plot.barh(figsize = (6,10),color = 'orange'
  17.     name=pf+'top20分析' 
  18.     plt.title(name
  19.     #根據函數變量名出圖 

定義函數后,批量出圖so easy:

 

Python 從爬蟲到數據分析

 

Python 從爬蟲到數據分析

學會函數的構建,一個數據分析師才算真正能夠告別Excel的鼠標點擊模式,邁入高效分析的領域。

 

責任編輯:未麗燕 來源: 極客猴
相關推薦

2023-12-26 08:40:06

分類算法數據分析Python

2017-09-05 14:34:02

數據分析數據庫python

2025-04-28 09:35:36

2025-04-02 09:33:01

2020-04-27 09:25:16

Python爬蟲庫數據科學

2024-12-09 10:32:25

2018-12-05 13:59:45

電影分析爬蟲

2025-05-30 05:00:00

數據分析大數據數字化

2012-12-10 13:24:15

回歸分析數據挖掘

2017-01-05 21:05:40

2016-12-30 17:04:57

2016-11-01 13:23:50

數據分析大數據

2024-09-28 10:38:14

數據分析數據驅動

2016-11-16 13:10:10

2013-04-10 13:55:09

IDF2013柏安娜端到端

2020-05-13 11:32:28

數據分析數值分析

2018-01-16 12:31:33

Python爬蟲數據

2015-08-14 10:28:09

大數據

2021-01-12 11:27:57

KSA模型數據

2025-02-11 14:02:11

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 韩国精品在线 | 视频一区二区三区中文字幕 | 伊人春色成人 | 日日操日日干 | 国产精品一二三区在线观看 | 犬夜叉在线观看 | 亚洲一区二区久久久 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 国产一区二区久久久 | av午夜激情| 日韩欧美1区2区 | 理论片午午伦夜理片影院 | 亚洲精品一区二区三区 | 91久久国产 | 国产美女精品 | 91人人看| 天堂精品 | 天堂久久天堂综合色 | 极品国产视频 | 中文字幕av在线 | av在线播放网址 | 中文日韩在线 | 国产高清视频在线播放 | 久久久久久综合 | 超碰在线97国产 | 色永久| 亚洲激精日韩激精欧美精品 | 在线91| 超碰在线97国产 | 日韩视频精品 | 国产日韩精品视频 | 一级片免费视频 | 精品福利在线视频 | 夜夜骑av| 黄色大片网站 | 日韩中文字幕在线视频 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 欧美日韩视频在线播放 | 99精品一区二区三区 | 国产日韩欧美在线 | 色资源站|