Python新手入門教程_教你怎麼用Python作數據分析

Python新手入門教程_教你怎麼用Python作數據分析python

跟你們講了這麼多期的Python教程,有小夥伴在學Python新手教程的時候說學Python比較複雜的地方就是資料太多了,比較複雜。json

不少網上的資料都是從語法教起的,花了不少時間仍是雲裏霧裏,摸不清方向。不少激情飽滿的小夥伴卡在了Python新手入門的前一步。bash



彆着急嘛,激情仍是要有的,堅持是要繼續的,學習哪是一朝一夕的事情呢!!!微信

可別喪,堅持住,我來幫你們捋一捋頭緒,捋一捋思路!幫助你們提升學習效率!app

三大板塊:

  • 兩組Python基礎術語
  • 如何實現爬蟲
  • 如何作數據分析

1.兩大Python基礎術語函數

A.變量和賦值工具

Python能夠直接定義變量名字並進行賦值的,例如咱們寫出a = 4時,Python解釋器幹了兩件事情:學習

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


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



例以下圖代碼,「=」的做用就是賦值,同時Python會自動識別數據類型:網站

a=4 #整型數據
b=2 #整型數據
c=「4」 #字符串數據
d=「2」 #字符串數據
print(「a+b結果爲」,a+b)#兩個整數相加,結果是6
print(「c+d結果爲」,c+d)#兩個文本合併,結果是文本「42」
#如下爲運行結果
>>>a+b結果爲 6
>>>c+d結果爲 42
複製代碼

請閱讀代碼塊裏的代碼和註釋,你會發現Python是及其易讀易懂的。

B.數據類型

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

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


它們分別是這麼寫的:

列表(list):

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


list是一種有序的集合,裏面的元素能夠是以前提到的任何一種數據格式和數據類型(整型、浮點、列表……),

並能夠隨時指定順序添加其中的元素,其形式是:

#ist是一個可變的有序表,因此,能夠往list中追加元素到末尾:
liebiao.append('瘦')
ptint(liebiao)
#結果1
>>>[1, 2.223, -3, '劉強東', '章澤天', '周杰倫', '昆凌', ['微博', 'B站', '抖音'], '瘦']
#也能夠把元素插入到指定的位置,好比索引號爲5的位置,插入「胖」這個元素:
liebiao.insert(5, '胖')
ptint(liebiao)
#結果2
>>>[1, 2.223, -3, '劉強東', '章澤天', '胖', '周杰倫', '昆凌', ['微博', 'B站', '抖音'], '瘦']
複製代碼


字典(dict):

#字典
zidian={'劉強東':'46','章澤天':'36','周杰倫':'40','昆凌':'26'}
複製代碼


字典使用鍵-值(key-value)存儲,無序,具備極快的查找速度。以上面的字典爲例,想要快速知道周杰倫的年齡,

就能夠這麼寫:

zidian['周杰倫']
>>>'40'
複製代碼


dict內部存放的順序和key放入的順序是沒有關係的,也就是說,"章澤天"並不是是在"劉強東"的後面。

DataFrame:

DataFrame能夠簡單理解爲excel裏的表格格式。導入pandas包後,字典和列表均可以轉化爲DataFrame,

以上面的字典爲例,轉化爲DataFrame是這樣的:

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





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

是否是有不少東西在學Python新手入門教程的時候不懂的,在這裏悟了一些呢!

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

2.從Python爬蟲來學循環函數

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

  • for函數

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

zidian={'劉強東':'46','章澤天':'36','周杰倫':'40','昆凌':'26'}
for key in zidian:
 print(key)
>>>
劉強東
章澤天
周杰倫
昆凌
複製代碼

由於dict的存儲不是按照list的方式順序排列,因此,迭代出的結果順序極可能不是每次都同樣。默認狀況下,dict迭代的是key。若是要迭代value,能夠用for value in d.values(),若是要同時#迭代key和value,能夠用for k, v in d.items()

能夠看到,字典裏的人名被一一打印出來了。for 函數的做用就是用於遍歷數據。掌握for函數,能夠說是真正入門了Python函數。

  • 爬蟲和循環

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







該網站的周票房json數據地址能夠經過抓包工具找到,網址爲www.cbooo.cn/BoxOffice/g…


仔細觀察,該網站不一樣日期的票房數據網址(url)只有後面的日期在變化,訪問不一樣的網址(url)就能夠看到不一樣日期下的票房數據:


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

import pandas as pd
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)})
''' 將網址相同的部分生成5次,並利用pandas的時間序列功能生成5個星期一對應的日期。 其中用到了第一部分提供的多個數據類型: range(5)屬於列表, 'urls':[]屬於字典, pd.dataframe屬於dataframe '''
url_df['urls'] = url_df['urls'] + url_df['date'].astype('str')
複製代碼

滑動滑塊能夠看到完整代碼和中間的註釋。

爲了方便理解,我給你們畫了一個for函數的遍歷過程示意圖:

此處省略掉後續爬取過程,相關爬蟲代碼見文末。咱們使用爬蟲爬取了5800+條數據,包含20個字段,時間囊括了從2008年1月

開始至2019年2月十一年期間的單週票房、累計票房、觀影人次、場均人次、場均票價、場次環比變化等信息

3. 用Python實現數據分析?

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

  • Python分析

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

好比當咱們想看單週票房第一的排名分別都是哪些電影時,可使用pandas工具庫中經常使用的方法,篩選出周票房爲第一名的全部數據,

並保留相同電影中周票房最高的數據進行分析整理:

import pandas as pd
data = pd.read_csv('中國票房數據爬取測試20071-20192.csv',engine='python')
data[data['平均上座人數']>20]['電影名']
#計算周票房第一隨時間變化的結果,導入數據,並選擇平均上座人數在20以上的電影爲有效數據
dataTop1_week = data[data['排名']==1][['電影名','周票房']]
#取出周票房排名爲第一名的全部數據,並保留「電影名」和「周票房」兩列數據
dataTop1_week = dataTop1_week.groupby('電影名').max()['周票房'].reset_index()
#用「電影名」來分組數據,相同電影連續霸榜的選擇最大的周票房保留,其餘數據刪除
dataTop1_week = dataTop1_week.sort_values(by='周票房',ascending=False)
#將數據按照「周票房」進行降序排序
dataTop1_week.index = dataTop1_week['電影名']
del dataTop1_week['電影名']
#整理index列,使之變爲電影名,並刪掉原來的電影名列
dataTop1_week
#查看數據複製代碼

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



  • 函數化分析

以上是一個簡單的統計分析過程。接下來就講講Excel基礎功能不能作的事——自定義函數提效。觀察數據能夠發現,

數據中記錄了周票房和總票房的排名,那麼剛剛計算了周票房排名的代碼,還能不能複用作一張總票房分析呢?



固然能夠,只要使用def函數和剛剛寫好的代碼創建自定義函數,並說明函數規則便可:

def pypic(pf):

#定義一個pypic函數,變量是pf

dataTop1_sum = data[['電影名',pf]]

#取出源數據中,列名爲「電影名」和pf兩列數據

dataTop1_sum = dataTop1_sum.groupby('電影名').max()[pf].reset_index()

#用「電影名」來分組數據,相同電影連續霸榜的選擇最大的pf票房保留,其餘數據刪除

dataTop1_sum = dataTop1_sum.sort_values(by=pf,ascending=False)

#將數據按照pf進行降序排序

dataTop1_sum.index = dataTop1_sum['電影名']

del dataTop1_sum['電影名']

#整理index列,使之變爲電影名,並刪掉原來的電影名列

dataTop1_sum[:20].iloc[::-1].plot.barh(figsize = (6,10),color = 'orange')

name=pf+'top20分析'

plt.title(name)

#根據函數變量名出圖

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


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

學Python新手入門教程的同時認真看一下這篇文章,相信不少東西你會恍然大悟。

【注】本篇文章參考自微信公衆號:小詹學Python,此公衆號按期會分享Python相關學習教程。

相關文章
相關標籤/搜索