日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

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

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

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

目錄

01 生成數據表

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

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

獲取外部數據

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

1import numpy as np

2import pandas as pd

導入數據表

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

官方文檔。

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

2df=pd.DataFrame(pd.read_excel('name.xlsx'))

創建數據表

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

1df = 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 做數據分析

df

02 數據表檢查

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

數據維度(行列)

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

1#查看數據表的維度

2df.shape

3(6, 6)

數據表信息

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

1#數據表信息

2df.info()

3

4<class 'pandas.core.frame.DataFrame'>

5RangeIndex: 6 entries, 0 to 5

6Data columns (total 6 columns):

7id 6 non-null int64

8date 6 non-null datetime64[ns]

9city 6 non-null object

10category 6 non-null object

11age 6 non-null int64

12price 4 non-null float64

13dtypes: datetime64[ns](1), float64(1), int64(2), object(2)

14memory usage: 368.0+ bytes

查看數據格式

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

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

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

1#查看數據表各列格式

2df.dtypes

3

4id int64

5date datetime64[ns]

6city object

7category object

8age int64

9price float64

10dtype: object

11

12#查看單列格式

13df['B'].dtype

14

15dtype('int64')

查看空值

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

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

查看空值

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

1#檢查數據空值

2df.isnull()

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

df_isnull

1#檢查特定列空值

2df['price'].isnull()

3

40 False

51 True

62 False

73 False

84 True

95 False

10Name: price, dtype: bool

查看唯一值

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

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

查看唯一值

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

1#查看 city 列中的唯一值

2df['city'].unique()

3

4array(['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], dtype=object)

查看數據表數值

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

1#查看數據表的值

2df.values

3

4array([[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#查看列名稱

2df.columns

3

4Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')

查看前 10 行數據

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

1`#查看前 3 行數據``df.head(``3``)`

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

df_head(3)

查看后 10 行數據

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

1`#查看最后 3 行``df.tail(``3``)`

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

df_tail(3)

03 數據表清洗

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

處理空值(刪除或填充)

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

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

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

查找和替換空值

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

1#刪除數據表中含有空值的行

2df.dropna(how='any')

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

df_dropna

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

1#使用數字 0 填充數據表中空值

2df.fillna(value=0)

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

充。可以看到兩個空值字段顯示為 3299.5

1#使用 price 均值對 NA 進行填充

2df['price'].fillna(df['price'].mean())

3

40 1200.0

51 3299.5

62 2133.0

73 5433.0

84 3299.5

95 4432.0

10Name: price, dtype: float64

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

df_nan

清理空格

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

1#清除 city 字段中的字符空格

2df['city']=df['city'].map(str.strip)

大小寫轉換

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

1#city 列大小寫轉換

2df['city']=df['city'].str.lower()

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

lower

更改數據格式

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

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

設置單元格格式

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

1#更改數據格式

2df['price'].astype('int')

3

40 1200

51 3299

62 2133

73 5433

84 3299

95 4432

10Name: price, dtype: int32

更改列名稱

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

1#更改列名稱

2df.rename(columns={'category': 'category-size'})

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

df_rename

刪除重復值

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

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

刪除重復項

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

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

1df['city']

20 beijing

31 sh

42 guangzhou

53 shenzhen

64 shanghai

75 beijing

8Name: city, dtype: object

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

1#刪除后出現的重復值

2df['city'].drop_duplicates()

30 beijing

41 sh

52 guangzhou

63 shenzhen

74 shanghai

8Name: city, dtype: object

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

1#刪除先出現的重復值

2df['city'].drop_duplicates(keep='last')

31 sh

42 guangzhou

53 shenzhen

64 shanghai

75 beijing

8Name: city, dtype: objec

數值修改及替換

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

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

查找和替換空值

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

1#數據替換

2df['city'].replace('sh', 'shanghai')

30 beijing

41 shanghai

52 guangzhou

63 shenzhen

74 shanghai

85 beijing

9Name: city, dtype: object

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

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

4-6 目錄

04 數據預處理

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

組及標記等工作。

數據表合并

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

1#創建 df1 數據表

2df1=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 做數據分析

df1

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

1#數據表匹配合并,inner 模式

2df_inner=pd.merge(df,df1,how='inner')

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

df_inner

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

1#其他數據表匹配模式

2df_left=pd.merge(df,df1,how='left')

3df_right=pd.merge(df,df1,how='right')

4df_outer=pd.merge(df,df1,how='outer')

設置索引列

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

設置索引的函數為 set_index。

1#設置索引列

2df_inner.set_index('id')

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

df_inner_set_index

排序(按索引,按數值)

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

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

排序

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

使用的函數為 sort_values。

1#按特定列的值排序

2df_inner.sort_values(by=['age'])

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

sort_values

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

1#按索引列排序

2df_inner.sort_index()

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

sort_index

數據分組

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

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

1#如果 price 列的值>3000,group 列顯示 high,否則顯示 low

2df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')

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

where

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

1#對復合多個條件的數據進行分組標記

2df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1

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

sign

數據分列

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

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

數據分列

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

1#對 category 字段的值依次進行分列,并創建數據表,索引值為 df_inner 的索引列,列名稱為 category 和 size

2pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])

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

split

1#將完成分列后的數據表與原 df_inner 數據表進行匹配

2df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

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

merge_1

05 數據提取

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

按標簽提取(loc)

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

1#按索引提取單行的數值

2df_inner.loc[3]

3id 1004

4date 2013-01-05 00:00:00

5city shenzhen

6category 110-C

7age 32

8price 5433

9gender female

10m-point 40

11pay Y

12group high

13sign NaN

14category_1 110

15size C

16Name: 3, dtype: object

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

1#按索引提取區域行數值

2df_inner.loc[0:5]

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

df_inner_loc1

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

1#重設索引

2df_inner.reset_index()

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

reset_index

1#設置日期為索引

2df_inner=df_inner.set_index('date')

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

set_index_date

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

1#提取 4 日之前的所有數據

2df_inner[:'2013-01-04']

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

按提起提取

按位置提取(iloc)

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

1#使用 iloc 按位置區域提取數據

2df_inner.iloc[:3,:2]

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

iloc1

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

1#使用 iloc 按位置單獨提取數據

2df_inner.iloc[[0,2,5],[4,5]]

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

iloc2

按標簽和位置提取(ix)

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

1#使用 ix 按索引標簽和位置混合提取數據

2df_inner.ix[:'2013-01-03',:4]

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

ix

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

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

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

1#判斷 city 列的值是否為 beijing

2df_inner['city'].isin(['beijing'])

3

4date

52013-01-02 True

62013-01-05 False

72013-01-07 True

82013-01-06 False

92013-01-03 False

102013-01-04 False

11Name: city, dtype: bool

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

1#先判斷 city 列里是否包含 beijing 和 shanghai,然后將復合條件的數據提取出來。

2df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]

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

loc 按篩選條件提取

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

1category=df_inner['category']

20 100-A

33 110-C

45 130-F

54 210-A

61 100-B

72 110-A

8Name: category, dtype: object

9

10#提取前三個字符,并生成數據表

11pd.DataFrame(category.str[:3])

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

category_str

06 數據篩選

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

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

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

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

篩選

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

1#使用“與”條件進行篩選

2df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]

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

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

1#使用“或”條件篩選

2df_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 字段進行求和

2df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'),

3['id','city','age','category','gender','price']].sort(['age']).price.sum()

4

519796

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

1#使用“非”條件進行篩選

2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])

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

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

1#對篩選后的數據按 city 列進行計數

2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()

34

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

1#使用 query 函數進行篩選

2df_inner.query('city == ["beijing", "shanghai"]')

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

query

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

1#對篩選后的結果按 price 進行求和

2df_inner.query('city == ["beijing", "shanghai"]').price.sum()

312230

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

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

7-9 目錄

07 數據匯總

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

分類匯總

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

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

分類匯總 1

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

1#對所有列進行計數匯總

2df_inner.groupby('city').count()

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

groupby

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

1#對特定的 ID 列進行計數匯總

2df_inner.groupby('city')['id'].count()

3city

4beijing 2

5Guangzhou 1

6shanghai 2

7shenzhen 1

8Name: id, dtype: int64

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

1#對兩個字段進行匯總計數

2df_inner.groupby(['city','size'])['id'].count()

3city size

4beijing A 1

5F 1

6guangzhou A 1

7shanghai A 1

8B 1

9shenzhen C 1

10Name: id, dtype: int64

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

1#對 city 字段進行匯總并計算 price 的合計和均值。

2df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])

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

groupby1

數據透視

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

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

數據透視

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

1#數據透視表

2pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True)

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

pivot_table

08 數據統計

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

數據采樣

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

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

數據抽樣

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

1#簡單的數據采樣

2df_inner.sample(n=3)

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

簡單隨機采樣

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

1#手動設置采樣權重

2weights = [0, 0, 0, 0, 0.5, 0.5]

3df_inner.sample(n=2, weights=weights)

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

手動設置采樣權重 1

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

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

手動設置采樣權重 2

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

1#采樣后不放回

2df_inner.sample(n=6, replace=False)

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

采樣后不放回

1#采樣后放回

2df_inner.sample(n=6, replace=True)

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

采樣后放回

描述統計

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

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

描述統計

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

1#數據表描述性統計

2df_inner.describe().round(2).T

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

describe

標準差

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

1#標準差

2df_inner['price'].std()

31523.3516556155596

協方差

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

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

協方差

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

1#兩個字段間的協方差

2df_inner['price'].cov(df_inner['m-point'])

317263.200000000001

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

cov

相關分析

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

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

相關系數

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

1#相關性分析

2df_inner['price'].corr(df_inner['m-point'])

30.77466555617085264

4

5#數據表相關性分析

6df_inner.corr()

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

corr

09 數據輸出

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

寫入 excel

1#輸出到 excel 格式

2df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')

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

excel

寫入 csv

1#輸出到 CSV 格式

2df_inner.to_csv('excel_to_python.csv')

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

1#創建數據表

2df = 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]},

8columns =['id','date','city','category','age','price'])

9

10#創建自定義函數

11def table_info(x):

12 shape=x.shape

13 types=x.dtypes

14 colums=x.columns

15 print("數據維度(行,列): ",shape)

16 print("數據格式: ",types)

17 print("列名稱: ",colums)

18

19#調用自定義函數獲取 df 數據表信息并輸出結果

20table_info(df)

21

22數據維度(行,列):

23(6, 6)

24數據格式:

25id int64

26date datetime64[ns]

27city object

28category object

29age int64

30price float64

31dtype: object

32列名稱:

33Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')

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

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定