精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文看懂怎么用Python做數據分析

大數據 數據分析 后端
常遇到兩類朋友。一類是會爬蟲但不知道如何進一步做數據分析的,一類是平常用 Excel 做分析但不太會用 Python 分析的。如果和你很像,那下面這篇系統長文會很適合你,建議先收藏。

常遇到兩類朋友。一類是會爬蟲但不知道如何進一步做數據分析的,一類是平常用 Excel 做分析但不太會用 Python 分析的。如果和你很像,那下面這篇系統長文會很適合你,建議先收藏。

Excel 是數據分析中最常用的工具,本文通過 Python 與 excel 的功能對比介紹如何使用 Python 通過函數式編程完成 excel 中的數據處理及分析工作。從 1787 頁的 pandas 官網文檔中總結出最常用的 36 個函數,通過這些函數介紹如何通過 Python 完成數據生成和導入、數據清洗、預處理、數據分類、數據篩選、分類 匯總、透視等最常見的操作。

文章內容共分為 9 個部分目錄如下:

一文看懂怎么用 Python 做數據分析

01 生成數據表

***部分是生成數據表,常見的生成方法有兩種,***種是導入外部數據,第二種是直接寫入數據。 Excel 中的文件菜單中提供了獲取外部數據的功能,支持數據庫和文本文件和頁面的多種數據源導入。

一文看懂怎么用 Python 做數據分析

python 支持從多種類型的數據導入。在開始使用 python 進行數據導入前需要先導入 pandas 庫,為了方便起見,我們也同時導入 numpy 庫。

  1. import numpy as np 
  2. import pandas as pd 

導入數據表

下面分別是從 excel 和 csv 格式文件導入數據并創建數據表的方法。代碼是最簡模式,里面有很多可選參數設置,例如列名稱,索引列,數據格式等等。感興趣的朋友可以參考 pandas 的

官方文檔。

  1. df=pd.DataFrame(pd.read_csv('name.csv',header=1)) 
  2. df=pd.DataFrame(pd.read_excel('name.xlsx')) 

創建數據表

另一種方法是通過直接寫入數據來生成數據表,excel 中直接在單元格中輸入數據就可以,python 中通過下面的代碼來實現。生成數據表的函數是 pandas 庫中的 DateFrame 函數,數據表一共有 6 行數據,每行有 6 個字段。在數據中我們特意設置了一些 NA 值和有問題的字段,例如包含空格等。后面將在數據清洗步驟進行處理。后面我們將統一以 DataFrame 的簡稱 df 來命名數據表。

  1. df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], 
  2.                    "date":pd.date_range('20130102', periods=6), 
  3.                    "city":['Beijing ''SH'' guangzhou ''Shenzhen''shanghai''BEIJING '], 
  4.                    "age":[23,44,54,32,34,32], 
  5.                    "category":['100-A','100-B','110-A','110-C','210-A','130-F'], 
  6.                    "price":[1200,np.nan,2133,5433,np.nan,4432]}, 
  7.                    columns =['id','date','city','category','age','price']) 

這是剛剛創建的數據表,我們沒有設置索引列,price 字段中包含有 NA 值,city 字段中還包含了一些臟數據。

一文看懂怎么用 Python 做數據分析

02 數據表檢查

第二部分是對數據表進行檢查,python 中處理的數據量通常會比較大,比如我們之前的文章中介紹的紐約出租車數據和 Citibike 的騎行數據,數據量都在***,我們無法一目了然的 了解數據表的整體情況,必須要通過一些方法來獲得數據表的關鍵信息。數據表檢查的另一個目的是了解數據的概況,例如整個數據表的大小,所占空間,數據格式,是否有空值和重復項和具體的數據內容。為后面的清洗和預處理做好準備。

數據維度(行列)

Excel 中可以通過 CTRL+向下的光標鍵,和 CTRL+向右的光標鍵來查看行號和列號。Python 中使用 shape 函數來查看數據表的維度,也就是行數和列數,函數返回的結果(6,6)表示數據表有 6 行,6 列。下面是具體的代碼。

  1. #查看數據表的維度 
  2. df.shape 
  3. (6, 6) 

數據表信息

使用 info 函數查看數據表的整體信息,這里返回的信息比較多,包括數據維度,列名稱,數據格式和所占空間等信息。

  1. #數據表信息 
  2. df.info() 
  3.   
  4. <class 'pandas.core.frame.DataFrame'> 
  5. RangeIndex: 6 entries, 0 to 5 
  6. Data columns (total 6 columns): 
  7. id          6 non-null int64 
  8. date        6 non-null datetime64[ns] 
  9. city        6 non-null object 
  10. category    6 non-null object 
  11. age         6 non-null int64 
  12. price       4 non-null float64 
  13. dtypes: datetime64[ns](1), float64(1), int64(2), object(2) 
  14. memory usage: 368.0+ bytes 

查看數據格式

Excel 中通過選中單元格并查看開始菜單中的數值類型來判斷數據的格式。Python 中使用 dtypes 函數來返回數據格式。

一文看懂怎么用 Python 做數據分析

Dtypes 是一個查看數據格式的函數,可以一次性查看數據表中所有數據的格式,也可以指定一列來單獨查看。

  1. #查看數據表各列格式 
  2. df.dtypes 
  3.   
  4. id                   int64 
  5. date        datetime64[ns] 
  6. city                object 
  7. category            object 
  8. age                  int64 
  9. price              float64 
  10. dtype: object 
  11. #查看單列格式 
  12. df['B'].dtype 
  13.   
  14. dtype('int64'

查看空值

Excel 中查看空值的方法是使用“定位條件”功能對數據表中的空值進行定位。“定位條件”在“開始”目錄下的“查找和選擇”目錄中。

一文看懂怎么用 Python 做數據分析

Isnull 是 Python 中檢驗空值的函數,返回的結果是邏輯值,包含空值返回 True,不包含則返回 False。可以對整個數據表進行檢查,也可以單獨對某一列進行空值檢查。

  1. #檢查數據空值 
  2. df.isnull() 
一文看懂怎么用 Python 做數據分析
  1. #檢查特定列空值 
  2. df['price'].isnull() 
  3.   
  4. 0    False 
  5. 1     True 
  6. 2    False 
  7. 3    False 
  8. 4     True 
  9. 5    False 
  10. Name: price, dtype: bool 

查看唯一值

Excel 中查看唯一值的方法是使用“條件格式”對唯一值進行顏色標記。Python 中使用 unique 函數查看唯一值。

一文看懂怎么用 Python 做數據分析

Unique 是查看唯一值的函數,只能對數據表中的特定列進行檢查。下面是代碼,返回的結果是該列中的唯一值。類似與 Excel 中刪除重復項后的結果。

  1. #查看city列中的唯一值 
  2. df['city'].unique() 
  3.   
  4. array(['Beijing ''SH'' guangzhou ''Shenzhen''shanghai''BEIJING '], dtype=object) 

查看數據表數值

Python 中的 Values 函數用來查看數據表中的數值。以數組的形式返回,不包含表頭信息。

  1. #查看數據表的值 
  2. df.values 
  3.   
  4. array([[1001, Timestamp('2013-01-02 00:00:00'), 'Beijing ''100-A', 23, 
  5.         1200.0], 
  6.        [1002, Timestamp('2013-01-03 00:00:00'), 'SH''100-B', 44, nan], 
  7.        [1003, Timestamp('2013-01-04 00:00:00'), ' guangzhou ''110-A', 54, 
  8.         2133.0], 
  9.        [1004, Timestamp('2013-01-05 00:00:00'), 'Shenzhen''110-C', 32, 
  10.         5433.0], 
  11.        [1005, Timestamp('2013-01-06 00:00:00'), 'shanghai''210-A', 34, 
  12.         nan], 
  13.        [1006, Timestamp('2013-01-07 00:00:00'), 'BEIJING ''130-F', 32, 
  14.         4432.0]], dtype=object) 

查看列名稱

Colums 函數用來單獨查看數據表中的列名稱。

  1. #查看列名稱 
  2. df.columns 
  3.   
  4. Index(['id''date''city''category''age''price'], dtype='object'

查看前 10 行數據

Head 函數用來查看數據表中的前 N 行數據,默認 head()顯示前 10 行數據,可以自己設置參數值來確定查看的行數。下面的代碼中設置查看前 3 行的數據。

  1. #查看前3行數據 
  2. df.head(3) 
一文看懂怎么用 Python 做數據分析

查看后 10 行數據

Tail 行數與 head 函數相反,用來查看數據表中后 N 行的數據,默認 tail()顯示后 10 行數據,可以自己設置參數值來確定查看的行數。下面的代碼中設置查看后 3 行的數據。

  1. #查看***3行 
  2. df.tail(3) 
一文看懂怎么用 Python 做數據分析

03 數據表清洗

第三部分是對數據表中的問題進行清洗。主要內容包括對空值,大小寫問題,數據格式和重復值的處理。這里不包含對數據間的邏輯驗證。

處理空值(刪除或填充)

我們在創建數據表的時候在 price 字段中故意設置了幾個 NA 值。對于空值的處理方式有很多種,可以直接刪除包含空值的數據,也可以對空值進行填充,比如用 0 填充或者用均值填充。還可以根據不同字段的邏輯對空值進行推算。

Excel 中可以通過“查找和替換”功能對空值進行處理,將空值統一替換為 0 或均值。也可以通過“定位”空值來實現。

一文看懂怎么用 Python 做數據分析

Python 中處理空值的方法比較靈活,可以使用 Dropna 函數用來刪除數據表中包含空值的數據,也可以使用 fillna 函數對空值進行填充。下面的代碼和結果中可以看到使用 dropna 函數后,包含 NA 值的兩個字段已經不見了。返回的是一個不包含空值的數據表。

  1. #刪除數據表中含有空值的行 
  2. df.dropna(how='any'
一文看懂怎么用 Python 做數據分析

除此之外也可以使用數字對空值進行填充,下面的代碼使用 fillna 函數對空值字段填充數字 0。

  1. #使用數字0填充數據表中空值 
  2. df.fillna(value=0) 

我們選擇填充的方式來處理空值,使用 price 列的均值來填充 NA 字段,同樣使用 fillna 函數,在要填充的數值中使用 mean 函數先計算 price 列當前的均值,然后使用這個均值對 NA 進行填充。可以看到兩個空值字段顯示為 3299.5。

  1. #使用price均值對NA進行填充 
  2. df['price'].fillna(df['price'].mean()) 
  3.   
  4. 0    1200.0 
  5. 1    3299.5 
  6. 2    2133.0 
  7. 3    5433.0 
  8. 4    3299.5 
  9. 5    4432.0 
  10. Name: price, dtype: float64 
一文看懂怎么用 Python 做數據分析

清理空格

除了空值,字符中的空格也是數據清洗中一個常見的問題,下面是清除字符中空格的代碼。

  1. #清除city字段中的字符空格 
  2. df['city']=df['city'].map(str.strip) 

大小寫轉換

在英文字段中,字母的大小寫不統一也是一個常見的問題。Excel 中有 UPPER,LOWER 等函數,python 中也有同名函數用來解決大小寫的問題。在數據表的 city 列中就存在這樣的問題。我們將 city 列的所有字母轉換為小寫。下面是具體的代碼和結果。

  1. #city列大小寫轉換   
  2. df['city']=df['city'].str.lower() 
一文看懂怎么用 Python 做數據分析

更改數據格式

Excel 中通過“設置單元格格式”功能可以修改數據格式。Python 中通過 astype 函數用來修改數據格式。

一文看懂怎么用 Python 做數據分析

Python 中 dtype 是查看數據格式的函數,與之對應的是 astype 函數,用來更改數據格式。下面的代碼中將 price 字段的值修改為 int 格式。

  1. #更改數據格式 
  2. df['price'].astype('int'
  3.   
  4. 0    1200 
  5. 1    3299 
  6. 2    2133 
  7. 3    5433 
  8. 4    3299 
  9. 5    4432 
  10. Name: price, dtype: int32 

更改列名稱

Rename 是更改列名稱的函數,我們將來數據表中的 category 列更改為 category-size。下面是具體的代碼和更改后的結果。

  1. #更改列名稱 
  2. df.rename(columns={'category''category-size'}) 
一文看懂怎么用 Python 做數據分析

刪除重復值

很多數據表中還包含重復值的問題,Excel 的數據目錄下有“刪除重復項”的功能,可以用來刪除數據表中的重復值。默認 Excel 會保留***出現的數據,刪除后面重復出現的數據。

一文看懂怎么用 Python 做數據分析

Python 中使用 drop_duplicates 函數刪除重復值。我們以數據表中的 city 列為例,city 字段中存在重復值。默認情況下 drop_duplicates()將刪除后出現的重復值(與 excel 邏輯一致)。增加 keep=’last’參數后將刪除***出現的重復值,保留***的值。下面是具體的代碼和比較結果。

原始的 city 列中 beijing 存在重復,分別在***位和***一位。

  1. df['city'
  2. 0      beijing 
  3. 1           sh 
  4. 2    guangzhou 
  5. 3     shenzhen 
  6. 4     shanghai 
  7. 5      beijing 
  8. Name: city, dtype: object 

使用默認的 drop_duplicates()函數刪除重復值,從結果中可以看到***位的 beijing 被保留,***出現的 beijing 被刪除。

  1. #刪除后出現的重復值 
  2. df['city'].drop_duplicates() 
  3. 0      beijing 
  4. 1           sh 
  5. 2    guangzhou 
  6. 3     shenzhen 
  7. 4     shanghai 
  8. Name: city, dtype: object 

設置 keep=’last‘’參數后,與之前刪除重復值的結果相反,***位出現的 beijing 被刪除,保留了***一位出現的 beijing。

  1. #刪除先出現的重復值 
  2. df['city'].drop_duplicates(keep='last'
  3. 1           sh 
  4. 2    guangzhou 
  5. 3     shenzhen 
  6. 4     shanghai 
  7. 5      beijing 
  8. Name: city, dtype: objec 

數值修改及替換

數據清洗中***一個問題是數值修改或替換,Excel 中使用“查找和替換”功能就可以實現數值的替換。

一文看懂怎么用 Python 做數據分析

Python 中使用 replace 函數實現數據替換。數據表中 city 字段上海存在兩種寫法,分別為 shanghai 和 SH。我們使用 replace 函數對 SH 進行替換。

  1. #數據替換 
  2. df['city'].replace('sh''shanghai'
  3. 0      beijing 
  4. 1     shanghai 
  5. 2    guangzhou 
  6. 3     shenzhen 
  7. 4     shanghai 
  8. 5      beijing 
  9. Name: city, dtype: object 

本篇文章這是系列的第二篇,介紹第 4-6 部分的內容,數據表生成,數據表查看,和數據清洗。

一文看懂怎么用 Python 做數據分析

04 數據預處理

第四部分是數據的預處理,對清洗完的數據進行整理以便后期的統計和分析工作。主要包括數據表的合并,排序,數值分列,數據分

組及標記等工作。

數據表合并

首先是對不同的數據表進行合并,我們這里創建一個新的數據表 df1,并將 df 和 df1 兩個數據表進行合并。在 Excel 中沒有直接完成數據表合并的功能,可以通過 VLOOKUP 函數分步實現。在 python 中可以通過 merge 函數一次性實現。下面建立 df1 數據表,用于和 df 數據表進行合并。

  1. #創建df1數據表 
  2. df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], 
  3. "gender":['male','female','male','female','male','female','male','female'], 
  4. "pay":['Y','N','Y','Y','N','Y','N','Y',], 
  5. "m-point":[10,12,20,40,40,40,30,20]}) 
一文看懂怎么用 Python 做數據分析

使用 merge 函數對兩個數據表進行合并,合并的方式為 inner,將兩個數據表中共有的數據匹配到一起生成新的數據表。并命名為 df_inner。

  1. #數據表匹配合并,inner模式 
  2. df_inner=pd.merge(df,df1,how='inner'
一文看懂怎么用 Python 做數據分析

除了 inner 方式以外,合并的方式還有 left,right 和 outer 方式。這幾種方式的差別在我其他的文章中有詳細的說明和對比。

  1. #其他數據表匹配模式 
  2. df_left=pd.merge(df,df1,how='left'
  3. df_right=pd.merge(df,df1,how='right'
  4. df_outer=pd.merge(df,df1,how='outer'

設置索引列

完成數據表的合并后,我們對 df_inner 數據表設置索引列,索引列的功能很多,可以進行數據提取,匯總,也可以進行數據篩選等。

設置索引的函數為 set_index。

  1. #設置索引列 
  2. df_inner.set_index('id'
一文看懂怎么用 Python 做數據分析

排序(按索引,按數值)

Excel 中可以通過數據目錄下的排序按鈕直接對數據表進行排序,比較簡單。Python 中需要使用 ort_values 函數和 sort_index 函數完成排序。

一文看懂怎么用 Python 做數據分析

在 python 中,既可以按索引對數據表進行排序,也可以看制定列的數值進行排序。首先我們按 age 列中用戶的年齡對數據表進行排序。

使用的函數為 sort_values。

  1. #按特定列的值排序 
  2. df_inner.sort_values(by=['age']) 
一文看懂怎么用 Python 做數據分析

Sort_index 函數用來將數據表按索引列的值進行排序。

  1. #按索引列排序 
  2. df_inner.sort_index() 
一文看懂怎么用 Python 做數據分析

數據分組

Excel 中可以通過 VLOOKUP 函數進行近似匹配來完成對數值的分組,或者使用“數據透視表”來完成分組。相應的 python 中使用 where 函數完成數據分組。

Where 函數用來對數據進行判斷和分組,下面的代碼中我們對 price 列的值進行判斷,將符合條件的分為一組,不符合條件的分為另一組,并使用 group 字段進行標記。

  1. #如果price列的值>3000,group列顯示high,否則顯示low 
  2. df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low'
一文看懂怎么用 Python 做數據分析

除了 where 函數以外,還可以對多個字段的值進行判斷后對數據進行分組,下面的代碼中對 city 列等于 beijing 并且 price 列大于等于 4000 的數據標記為 1。

  1. #對復合多個條件的數據進行分組標記 
  2. df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1 
一文看懂怎么用 Python 做數據分析

數據分列

與數據分組相反的是對數值進行分列,Excel 中的數據目錄下提供“分列”功能。在 python 中使用 split 函數實現分列。

一文看懂怎么用 Python 做數據分析

在數據表中 category 列中的數據包含有兩個信息,前面的數字為類別 id,后面的字母為 size 值。中間以連字符進行連接。我們使用 split 函數對這個字段進行拆分,并將拆分后的數據表匹配回原數據表中。

  1. #對category字段的值依次進行分列,并創建數據表,索引值為df_inner的索引列,列名稱為category和size 
  2. pd.DataFrame((x.split('-'for x in df_inner['category']),index=df_inner.index,columns=['category','size']) 
一文看懂怎么用 Python 做數據分析
  1. #將完成分列后的數據表與原df_inner數據表進行匹配 
  2. df_inner=pd.merge(df_inner,split,right_index=True, left_index=True
一文看懂怎么用 Python 做數據分析

05 數據提取

第五部分是數據提取,也是數據分析中最常見的一個工作。這部分主要使用三個函數,loc,iloc 和 ix,loc 函數按標簽值進行提取,iloc 按位置進行提取,ix 可以同時按標簽和位置進行提取。下面介紹每一種函數的使用方法。

按標簽提取(loc)

Loc 函數按數據表的索引標簽進行提取,下面的代碼中提取了索引列為 3 的單條數據。

  1. #按索引提取單行的數值 
  2. df_inner.loc[3] 
  3. id 1004 
  4. date 2013-01-05 00:00:00 
  5. city shenzhen 
  6. category 110-C 
  7. age 32 
  8. price 5433 
  9. gender female 
  10. m-point 40 
  11. pay Y 
  12. group high 
  13. sign NaN 
  14. category_1 110 
  15. size C 
  16. Name: 3, dtype: object 

使用冒號可以限定提取數據的范圍,冒號前面為開始的標簽值,后面為結束的標簽值。下面提取了 0 到 5 的數據行。

  1. #按索引提取區域行數值 
  2. df_inner.loc[0:5] 
一文看懂怎么用 Python 做數據分析

Reset_index 函數用于恢復索引,這里我們重新將 date 字段的日期設置為數據表的索引,并按日期進行數據提取。

  1. #重設索引 
  2. df_inner.reset_index() 
一文看懂怎么用 Python 做數據分析
  1. #設置日期為索引 
  2. df_inner=df_inner.set_index('date'
一文看懂怎么用 Python 做數據分析

使用冒號限定提取數據的范圍,冒號前面為空表示從 0 開始。提取所有 2013 年 1 月 4 日以前的數據。

  1. #提取4日之前的所有數據 
  2. df_inner[:'2013-01-04'
一文看懂怎么用 Python 做數據分析

按位置提取(iloc)

使用 iloc 函數按位置對數據表中的數據進行提取,這里冒號前后的數字不再是索引的標簽名稱,而是數據所在的位置,從 0 開始。

  1. #使用iloc按位置區域提取數據 
  2. df_inner.iloc[:3,:2] 
一文看懂怎么用 Python 做數據分析

iloc 函數除了可以按區域提取數據,還可以按位置逐條提取,前面方括號中的 0,2,5 表示數據所在行的位置,后面方括號中的數表示所在列的位置。

  1. #使用iloc按位置單獨提取數據 
  2. df_inner.iloc[[0,2,5],[4,5]] 
一文看懂怎么用 Python 做數據分析

按標簽和位置提取(ix)

ix 是 loc 和 iloc 的混合,既能按索引標簽提取,也能按位置進行數據提取。下面代碼中行的位置按索引日期設置,列按位置設置。

  1. #使用ix按索引標簽和位置混合提取數據 
  2. df_inner.ix[:'2013-01-03',:4] 
一文看懂怎么用 Python 做數據分析

按條件提取(區域和條件值)

除了按標簽和位置提起數據以外,還可以按具體的條件進行數據。下面使用 loc 和 isin 兩個函數配合使用,按指定條件對數據進行提取 。

使用 isin 函數對 city 中的值是否為 beijing 進行判斷。

  1. #判斷city列的值是否為beijing 
  2. df_inner['city'].isin(['beijing']) 
  3.   
  4. date 
  5. 2013-01-02 True 
  6. 2013-01-05 False 
  7. 2013-01-07 True 
  8. 2013-01-06 False 
  9. 2013-01-03 False 
  10. 2013-01-04 False 
  11. Name: city, dtype: bool 

將 isin 函數嵌套到 loc 的數據提取函數中,將判斷結果為 Ture 數據提取出來。這里我們把判斷條件改為 city 值是否為 beijing 和 shanghai。如果是就把這條數據提取出來。

  1. #先判斷city列里是否包含beijing和shanghai,然后將復合條件的數據提取出來。 
  2. df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])] 
一文看懂怎么用 Python 做數據分析

數值提取還可以完成類似數據分列的工作,從合并的數值中提取出制定的數值。

  1. category=df_inner['category'] 
  2. 0 100-A 
  3. 3 110-C 
  4. 5 130-F 
  5. 4 210-A 
  6. 1 100-B 
  7. 2 110-A
  8. Name: category, dtype: object 
  9. #提取前三個字符,并生成數據表 
  10. pd.DataFrame(category.str[:3]) 
一文看懂怎么用 Python 做數據分析

06 數據篩選

第六部分為數據篩選,使用與,或,非三個條件配合大于,小于和等于對數據進行篩選,并進行計數和求和。與 excel 中的篩選功能和 countifs 和 sumifs 功能相似。

按條件篩選(與,或,非)

Excel 數據目錄下提供了“篩選”功能,用于對數據表按不同的條件進行篩選。Python 中使用 loc 函數配合篩選條件來完成篩選功能。配合 sum 和 count 函數還能實現 excel 中 sumif 和 countif 函數的功能。

一文看懂怎么用 Python 做數據分析

使用“與”條件進行篩選,條件是年齡大于 25 歲,并且城市為 beijing。篩選后只有一條數據符合要求。

  1. #使用“與”條件進行篩選 
  2. df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']] 
一文看懂怎么用 Python 做數據分析

使用“或”條件進行篩選,年齡大于 25 歲或城市為 beijing。篩選后有 6 條數據符合要求。

  1. #使用“或”條件篩選 
  2. df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort 
  3. (['age']) 
一文看懂怎么用 Python 做數據分析

在前面的代碼后增加 price 字段以及 sum 函數,按篩選后的結果將 price 字段值進行求和,相當于 excel 中 sumifs 的功能。

  1. #對篩選后的數據按price字段進行求和 
  2. df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), 
  3. ['id','city','age','category','gender','price']].sort(['age']).price.sum() 
  4.   
  5. 19796  

使用“非”條件進行篩選,城市不等于 beijing。符合條件的數據有 4 條。將篩選結果按 id 列進行排序。

  1. #使用“非”條件進行篩選 
  2. df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']) 
一文看懂怎么用 Python 做數據分析

在前面的代碼后面增加 city 列,并使用 count 函數進行計數。相當于 excel 中的 countifs 函數的功能。

  1. #對篩選后的數據按city列進行計數 
  2. df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count() 

還有一種篩選的方式是用 query 函數。下面是具體的代碼和篩選結果。

  1. #使用query函數進行篩選 
  2. df_inner.query('city == ["beijing", "shanghai"]'
一文看懂怎么用 Python 做數據分析

在前面的代碼后增加 price 字段和 sum 函數。對篩選后的 price 字段進行求和,相當于 excel 中的 sumifs 函數的功能。

  1. #對篩選后的結果按price進行求和 
  2. df_inner.query('city == ["beijing", "shanghai"]').price.sum() 
  3. 12230 

這是第三篇,介紹第 7-9 部分的內容,數據匯總,數據統計,和數據輸出。

一文看懂怎么用 Python 做數據分析

07 數據匯總

第七部分是對數據進行分類匯總,Excel 中使用分類匯總和數據透視可以按特定維度對數據進行匯總,python 中使用的主要函數是 groupby 和 pivot_table。下面分別介紹這兩個函數的使用方法。

分類匯總

Excel 的數據目錄下提供了“分類匯總”功能,可以按指定的字段和匯總方式對數據表進行匯總。Python 中通過 Groupby 函數完成相應的操作,并可以支持多級分類匯總。

一文看懂怎么用 Python 做數據分析

Groupby 是進行分類匯總的函數,使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,groupby 按列名稱出現的順序進行分組。同時要制定分組后的匯總方式,常見的是計數和求和兩種。

  1. #對所有列進行計數匯總 
  2. df_inner.groupby('city').count() 
一文看懂怎么用 Python 做數據分析

可以在 groupby 中設置列名稱來對特定的列進行匯總。下面的代碼中按城市對 id 字段進行匯總計數。

  1. #對特定的ID列進行計數匯總 
  2. df_inner.groupby('city')['id'].count() 
  3. city 
  4. beijing 2 
  5. guangzhou 1 
  6. shanghai 2 
  7. shenzhen 1 
  8. Name: id, dtype: int64 
  9.  
  10. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvDOLa9f 

在前面的基礎上增加第二個列名稱,分布對 city 和 size 兩個字段進行計數匯總。

  1. #對兩個字段進行匯總計數 
  2. df_inner.groupby(['city','size'])['id'].count() 
  3. city size 
  4. beijing A 1 
  5. F 1 
  6. guangzhou A 1 
  7. shanghai A 1 
  8. B 1 
  9. shenzhen C 1 
  10. Name: id, dtype: int64 
  11.  
  12. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvDL89Gn 

除了計數和求和外,還可以對匯總后的數據同時按多個維度進行計算,下面的代碼中按城市對 price 字段進行匯總,并分別計算 price 的數量,總金額和平均金額。

  1. #對city字段進行匯總并計算price的合計和均值。 
  2. df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) 
一文看懂怎么用 Python 做數據分析

數據透視

Excel 中的插入目錄下提供“數據透視表”功能對數據表按特定維度進行匯總。Python 中也提供了數據透視表功能。通過 pivot_table 函數實現同樣的效果。

一文看懂怎么用 Python 做數據分析

數據透視表也是常用的一種數據分類匯總方式,并且功能上比 groupby 要強大一些。下面的代碼中設定 city 為行字段,size 為列字段,price 為值字段。分別計算 price 的數量和金額并且按行與列進行匯總。

  1. #數據透視表 
  2. pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True
一文看懂怎么用 Python 做數據分析

08 數據統計

第九部分為數據統計,這里主要介紹數據采樣,標準差,協方差和相關系數的使用方法。

數據采樣

Excel 的數據分析功能中提供了數據抽樣的功能,如下圖所示。Python 通過 sample 函數完成數據采樣。

一文看懂怎么用 Python 做數據分析

Sample 是進行數據采樣的函數,設置 n 的數量就可以了。函數自動返回參與的結果。

  1. #簡單的數據采樣 
  2. df_inner.sample(n=3) 
一文看懂怎么用 Python 做數據分析

Weights 參數是采樣的權重,通過設置不同的權重可以更改采樣的結果,權重高的數據將更有希望被選中。這里手動設置 6 條數據的權重值。將前面 4 個設置為 0,后面兩個分別設置為 0.5。

  1. #手動設置采樣權重 
  2. weights = [0, 0, 0, 0, 0.5, 0.5] 
  3. df_inner.sample(n=2, weights=weights) 
  4.  
  5. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvCvwN2y 
一文看懂怎么用 Python 做數據分析

從采樣結果中可以看出,后兩條權重高的數據被選中。

一文看懂怎么用 Python 做數據分析

Sample 函數中還有一個參數 replace,用來設置采樣后是否放回。

  1. #采樣后不放回 
  2. df_inner.sample(n=6, replace=False
一文看懂怎么用 Python 做數據分析
  1. #采樣后放回 
  2. df_inner.sample(n=6, replace=True
一文看懂怎么用 Python 做數據分析

描述統計

Excel 中的數據分析中提供了描述統計的功能。Python 中可以通過 Describe 對數據進行描述統計。

一文看懂怎么用 Python 做數據分析

描述統計

Describe 函數是進行描述統計的函數,自動生成數據的數量,均值,標準差等數據。下面的代碼中對數據表進行描述統計,并使用 round 函數設置結果顯示的小數位。并對結果數據進行轉置。

  1. #數據表描述性統計 
  2. df_inner.describe().round(2).T 
一文看懂怎么用 Python 做數據分析

標準差

Python 中的 Std 函數用來接算特定數據列的標準差。

  1. #標準差 
  2. df_inner['price'].std() 
  3. 1523.3516556155596 

協方差

Excel 中的數據分析功能中提供協方差的計算,python 中通過 cov 函數計算兩個字段或數據表中各字段間的協方差。

一文看懂怎么用 Python 做數據分析

Cov 函數用來計算兩個字段間的協方差,可以只對特定字段進行計算,也可以對整個數據表中各個列之間進行計算。

  1. #兩個字段間的協方差 
  2. df_inner['price'].cov(df_inner['m-point']) 
  3. 17263.200000000001 
  4. #數據表中所有字段間的協方差 
  5. df_inner.cov() 
一文看懂怎么用 Python 做數據分析

相關分析

Excel 的數據分析功能中提供了相關系數的計算功能,python 中則通過 corr 函數完成相關分析的操作,并返回相關系數。

一文看懂怎么用 Python 做數據分析

Corr 函數用來計算數據間的相關系數,可以單獨對特定數據進行計算,也可以對整個數據表中各個列進行計算。相關系數在-1 到 1 之間,接近 1 為正相關,接近-1 為負相關,0 為不相關。

  1. #相關性分析 
  2. df_inner['price'].corr(df_inner['m-point']) 
  3. 0.77466555617085264 
  4. #數據表相關性分析 
  5. df_inner.corr() 
一文看懂怎么用 Python 做數據分析

09 數據輸出

第九部分是數據輸出,處理和分析完的數據可以輸出為 xlsx 格式和 csv 格式。

寫入 excel

  1. #輸出到 excel 格式  
  2. df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc'
一文看懂怎么用 Python 做數據分析
excel

寫入 csv

  1. #輸出到 CSV 格式 
  2. df_inner.to_csv('excel_to_python.csv'

在數據處理的過程中,大部分基礎工作是重復和機械的,對于這部分基礎工作,我們可以使用自定義函數進行自動化。以下簡單介紹對數據表信息獲取自動化處理。

  1. 創建數據表 
  2. df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], 
  3. "date":pd.date_range('20130102', periods=6), 
  4. "city":['Beijing ''SH'' guangzhou ''Shenzhen''shanghai''BEIJING '], 
  5. "age":[23,44,54,32,34,32], 
  6. "category":['100-A','100-B','110-A','110-C','210-A','130-F'], 
  7. "price":[1200,np.nan,2133,5433,np.nan,4432]}, 
  8. columns =['id','date','city','category','age','price']) 
  9.  
  10. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvBC8kaw 
  11. #創建自定義函數 
  12. def table_info(x): 
  13.     shape=x.shape 
  14.     types=x.dtypes 
  15.     colums=x.columns 
  16.     print("數據維度(行,列):\n",shape) 
  17.     print("數據格式:\n",types) 
  18.     print("列名稱:\n",colums) 
  19.  
  20. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvBC8kaw 
  21. #調用自定義函數獲取df數據表信息并輸出結果 
  22. table_info(df) 
  23.   
  24. 數據維度(行,列): 
  25. (6, 6) 
  26. 數據格式: 
  27. id int64 
  28. date datetime64[ns] 
  29. city object 
  30. category object 
  31. age int64 
  32. price float64 
  33. dtype: object 
  34. 列名稱: 
  35. Index(['id''date''city''category''age''price'], dtype='object'
  36.  
  37. Read more: http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html#ixzz5rvBJs6Fv 

以上就是用 Python 做數據分析的基本內容。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2022-04-26 06:36:09

渠道分析數據采集

2025-04-03 05:10:00

數據分析分析方法MECE

2020-03-31 14:40:24

HashMap源碼Java

2022-05-12 13:44:35

數據分析數據

2019-05-22 09:50:42

Python沙箱逃逸網絡攻擊

2022-02-16 18:24:38

互聯網產品分析

2017-07-06 15:44:33

2021-12-08 22:29:41

經營分析體系

2025-07-11 01:45:00

SIM卡模塊識別

2016-08-18 00:21:12

網絡爬蟲抓取網絡

2024-08-12 12:30:27

2020-05-15 15:09:51

R語言數據分析

2023-02-23 19:21:51

NumPyPython數組

2021-08-02 06:56:19

TypeScript編程語言編譯器

2025-01-20 09:15:00

iOS 18.3蘋果iOS 18

2020-07-30 07:50:56

數據分析

2019-07-01 09:22:15

Linux操作系統硬件

2023-02-24 14:40:24

ndarrayPython數據分析

2021-05-11 10:40:29

JUCAQSJava

2023-04-10 11:35:31

評估模型業務流程
點贊
收藏

51CTO技術棧公眾號

久久九九全国免费| 石原莉奈一区二区三区在线观看| 精品av综合导航| 少妇av一区二区三区无码| 深夜福利免费在线观看| 免费在线观看成人| 欧美激情欧美激情| 人人人妻人人澡人人爽欧美一区| 国产精品99| 亚洲国产精品一区二区尤物区| 久久久久高清| 国产精品主播一区二区| 国产欧美在线| 最近2019中文字幕mv免费看| 少妇熟女视频一区二区三区| gogo亚洲高清大胆美女人体| 一区二区三区在线视频观看 | 性做爰过程免费播放| 亚洲男人天堂久久| 久久aⅴ国产欧美74aaa| 97视频在线观看成人| 久久噜噜色综合一区二区| 欧美综合精品| 日韩欧美激情在线| 蜜臀av免费观看| 高清精品在线| 一区二区三区资源| 亚洲综合首页| 酒色婷婷桃色成人免费av网| 成人午夜私人影院| 国产欧美中文字幕| 日韩欧美成人一区二区三区| 欧美在线观看天堂一区二区三区| 亚洲精品小视频在线观看| xxxx国产视频| 24小时成人在线视频| 色综合激情五月| 成人免费aaa| 日本精品600av| 中文字幕一区二区三中文字幕| 欧美日本国产精品| 污视频网站免费观看| 国产精品一级在线| 成人深夜直播免费观看| 中文字幕第315页| 老司机精品久久| 4k岛国日韩精品**专区| 日本少妇毛茸茸高潮| 欧美激情综合色综合啪啪| 最新中文字幕亚洲| 老司机福利在线观看| 国产日产精品一区二区三区四区的观看方式| 日韩欧美电影一二三| 成人免费播放视频| 日韩欧美中文在线观看| 日韩一级在线观看| 第一页在线视频| 日韩成人在线观看视频| 日韩欧美的一区二区| 在线成人精品视频| 18国产精品| 亚洲国产成人爱av在线播放| 99久久免费看精品国产一区 | 日本不卡在线视频| 国产精品露脸av在线| 69av视频在线观看| 免费不卡在线视频| 成人夜晚看av| 亚洲精品久久久久久久久久 | 日韩人妻一区二区三区| 日韩黄色网络| 一区二区亚洲精品国产| 久久久久久久久福利| 99免费精品| 九九热这里只有精品6| 国产午夜福利片| 久久精品首页| 国产精品色悠悠| 在线观看日韩一区二区| 国产一区二区网址| 国产伦精品一区二区三区照片| 日本加勒比一区| 久久婷婷综合激情| 亚洲图片都市激情| 特级毛片在线| 日韩欧美国产网站| av污在线观看| 99ri日韩精品视频| 亚洲桃花岛网站| www色aa色aawww| 日韩视频一区二区三区在线播放免费观看| 性欧美xxxx交| 天天天天天天天干| 国产成人综合自拍| 久久综合中文色婷婷| 一级毛片视频在线| 亚洲成人综合视频| 香蕉视频网站入口| 视频在线观看免费影院欧美meiju| 亚洲国产日韩欧美在线图片| 先锋影音av在线| 影音先锋一区| 国产精品男人爽免费视频1| 国产黄色美女视频| 国产色91在线| 成人免费观看cn| 综合久久av| 亚洲亚裔videos黑人hd| 欧美成人综合色| 日韩专区一卡二卡| 国产精品美女诱惑| 五月婷婷在线观看| 狠狠躁夜夜躁人人爽天天天天97| 午夜剧场高清版免费观看| 日本国产精品| 欧美二区在线播放| 国产尤物在线观看| 久久精品一区蜜桃臀影院| 成年人深夜视频| 欧美特黄色片| 亚洲欧美变态国产另类| 久久香蕉精品视频| 精品一区二区三区免费视频| 蜜桃网站成人| 波多野结衣中文字幕久久| 正在播放一区二区| 免费一级黄色录像| 亚洲永久视频| 国产在线一区二区三区播放| av文字幕在线观看| 欧美日韩成人综合| 亚洲精品一区二区三区影院忠贞| 伊人精品在线| 成人片在线免费看| 天堂av资源在线观看| 7777精品久久久大香线蕉| 国产91丝袜美女在线播放| 亚洲一区二区动漫| 国产一区视频观看| 18video性欧美19sex高清| 日韩丝袜美女视频| www.av视频| 国产精品99久久久久久久女警| 中文字幕成人一区| 欧美美女福利视频| 色偷偷888欧美精品久久久| 国产黄网在线观看| 久久久国产一区二区三区四区小说| 99在线免费视频观看| 亚洲日本视频在线| 精品视频9999| 亚洲精品中文字幕成人片 | 久久国产精品免费看| 成人午夜大片免费观看| 少妇大叫太大太粗太爽了a片小说| 激情综合五月| 欧美老少配视频| www.亚洲黄色| 亚洲午夜免费电影| 亚洲激情 欧美| 国产亚洲一区在线| 欧美日韩一区综合| h1515四虎成人| 丝袜美腿精品国产二区| 成人黄色免费网| 中文字幕一区二区三区不卡在线| 中文字幕成人免费视频| 91精品一区国产高清在线gif | 99福利在线观看| 国产一区二区三区站长工具| 国产精品91久久久| 日韩在线资源| 日韩欧美成人一区| 日韩av男人天堂| 久久一二三国产| 日韩精品你懂的| 中文字幕一区二区三区在线视频| 成人欧美一区二区| 自拍偷拍亚洲视频| 色噜噜久久综合伊人一本| 国产精品一区二区av白丝下载| 一区二区三区色| 最新中文字幕视频| 久久9热精品视频| 国产精品无码免费专区午夜| 中日韩免视频上线全都免费| 91精品免费久久久久久久久| 日韩伦理av| 国产香蕉一区二区三区在线视频| 国产又大又长又粗| 精品露脸国产偷人在视频| 国产破处视频在线观看| 国产99久久久久| 欧美成人一区二区在线观看| 成人羞羞动漫| 国产精品大全| xxxxx.日韩| 欧美激情中文网| 国产一二三在线观看| 日韩欧美专区在线| 亚洲高清视频免费观看| 一区二区国产盗摄色噜噜| 日韩人妻无码一区二区三区| 国产美女精品一区二区三区| 久久久999视频| 欧美在线三级| 午夜欧美性电影| 欧美天堂影院| 亚洲一区二区在线播放| 日本免费一区二区三区四区| 精品中文字幕在线观看| 电影在线高清| 亚洲激情 国产| 国产福利视频导航| 欧美三级日韩三级| 中文字幕精品三级久久久| 亚洲免费在线观看视频| 国产ts在线播放| 99在线视频精品| 久久发布国产伦子伦精品| 免费久久99精品国产| 黄色免费观看视频网站| 欧美日本久久| 中文字幕av久久| 欧美老女人另类| 久久er99热精品一区二区三区 | 国产精品一区二| 国产亚洲高清一区| 国产精品视频中文字幕91| 亚洲欧洲日本韩国| 性色av一区二区三区在线观看| 91高清在线观看视频| 俺去了亚洲欧美日韩| 国产51人人成人人人人爽色哟哟| 日韩电影在线观看永久视频免费网站| 国产成人av免费看| 91精选在线观看| 一本到在线视频| 欧美丝袜自拍制服另类| 中文字幕在线看人| 欧美午夜视频在线观看| 免费看日韩毛片| 亚洲成人一区二区| 国产无码精品一区二区| 亚洲一区二区三区在线看 | 欧美日韩国产丝袜另类| 国产第100页| 亚洲成人免费在线观看| 久久网免费视频| 亚洲国产人成综合网站| 亚洲一区二区91| 午夜久久久久久电影| 日韩精品久久久久久久| 精品久久久久久久久久久| 日韩av在线播| 黑人精品xxx一区| 亚洲欧美一区二区三区在线观看| 日韩欧美成人精品| 亚洲免费视频二区| 51午夜精品国产| 国产suv精品一区二区69| 日韩欧美一区中文| 黄色a在线观看| 亚洲奶大毛多的老太婆| 国产免费视频在线| 成人97在线观看视频| 色呦呦久久久| 97精品在线视频| 欧美美女日韩| 91精品久久久久久久久久另类 | 欧美一区二区三区白人| www.久久色| 亚洲老头老太hd| av播放在线观看| 欧美美女18p| 日本在线啊啊| 91精品久久久久久久久久久久久| 日韩一区二区三区精品视频第3页| 高清国产在线一区| 国产成人1区| 福利网在线观看| 中文国产一区| 亚洲欧美久久久久| 成人精品在线视频观看| 国产精品毛片一区二区| 亚洲视频网在线直播| 日韩精品视频免费播放| 91精品福利视频| 亚洲成人第一区| 国产午夜精品全部视频播放| a视频在线免费看| 热99久久精品| 香蕉大人久久国产成人av| 噜噜噜噜噜久久久久久91| 日韩在线看片| 欧美久久久久久久久久久久久| 男女性色大片免费观看一区二区| 青娱乐国产精品视频| 91理论电影在线观看| 中国一级片在线观看| 欧美日韩中文字幕在线| 国产精品乱码久久久| 亚洲精品xxxx| 蜜桃视频网站在线| 日本欧美国产在线| 综合伊人久久| 免费在线观看污污视频| 亚洲影音一区| 老司机av网站| 国产精品毛片a∨一区二区三区| 日本少妇激情舌吻| 日韩欧美国产一区二区在线播放| 二区在线视频| 青青草原成人在线视频| 澳门久久精品| 99re99热| 免费观看成人鲁鲁鲁鲁鲁视频| 你懂的在线观看网站| 一区二区三区在线免费播放| 亚洲一区二区色| 国产一区二区三区在线观看视频 | 国产一区二区三区久久| 97人人模人人爽人人澡| 国产精品麻豆久久久| 欧美超碰在线观看| 精品三级在线看| gogogogo高清视频在线| 国产精品尤物福利片在线观看| 自拍欧美一区| 精品国产一二三四区| 成人av第一页| 久久精品美女视频| 欧美一级在线免费| 激情影院在线观看| 国产免费亚洲高清| 精品精品久久| 欧洲熟妇精品视频| 久久久精品人体av艺术| 五月天婷婷久久| 日韩国产欧美精品一区二区三区| 麻豆av在线播放| 成人女人免费毛片| 伊人狠狠色j香婷婷综合| 黄色av电影网站| 亚洲狠狠爱一区二区三区| 三级网站在线看| 97免费在线视频| 亚洲精品播放| 成人性视频欧美一区二区三区| 国产欧美日韩三区| 最新国产中文字幕| 中文字幕免费精品一区高清| 精品久久在线| 中文字幕一区二区三区最新| 极品少妇xxxx精品少妇| wwwav国产| 精品国产欧美一区二区| 成人免费观看在线观看| 久久国产精品 国产精品| 免费亚洲婷婷| 久久久久久久久福利| 91精品一区二区三区久久久久久| а√天堂官网中文在线| 国产精品久久久久久久免费大片| 亚洲精品女人| 三上悠亚影音先锋| 欧美视频一区在线观看| 男人天堂久久久| 亚洲xxxx在线| 国产婷婷精品| 欧美亚洲色综久久精品国产| 在线成人免费视频| av伦理在线| 日韩精品一区二区三区四区五区| 美女精品一区二区| 国产探花在线播放| 亚洲精品视频免费| 99综合久久| 亚洲美免无码中文字幕在线 | 波多野结衣在线网址| 欧美岛国在线观看| 欧美成人影院| 91免费网站视频| 99久久免费视频.com| 波多野结衣在线观看视频| 久久亚洲精品一区| 日本成人a网站| 久久出品必属精品| 欧美性猛xxx| 国产激情在线观看| 蜜桃传媒视频第一区入口在线看| 麻豆精品一区二区综合av| 久久精品性爱视频| 最近2019年手机中文字幕 | 国产最新精品精品你懂的| 国产午夜久久久| 日韩在线视频观看| 欧美黑人巨大videos精品| 一区二区久久精品| 91久久精品国产91性色tv|