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

像Excel一樣使用python進行數據分析-(2)

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

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

1.數據預處理

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

數據表合并

首先是對不同的數據表進行合并,我們這里創建一個新的數據表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]}) 

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #數據表匹配合并,inner模式 
  2. df_inner=pd.merge(df,df1,how='inner'

 

 

像Excel一樣使用python進行數據分析-(2)

 

除了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'

 

像Excel一樣使用python進行數據分析-(2)

排序(按索引,按數值)

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

像Excel一樣使用python進行數據分析-(2)

 

 

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

使用的函數為sort_values。

  1. #按特定列的值排序 
  2. df_inner.sort_values(by=['age']) 

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #按索引列排序 
  2. df_inner.sort_index() 

 

像Excel一樣使用python進行數據分析-(2)

數據分組

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'

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #對復合多個條件的數據進行分組標記 
  2. df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1 

 

像Excel一樣使用python進行數據分析-(2)

數據分列

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

像Excel一樣使用python進行數據分析-(2)

在數據表中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']) 

 

像Excel一樣使用python進行數據分析-(2)

  1. #將完成分列后的數據表與原df_inner數據表進行匹配 
  2. df_inner=pd.merge(df_inner,split,right_index=True, left_index=True

 

像Excel一樣使用python進行數據分析-(2)

2.數據提取

第五部分是數據提取,也是數據分析中最常見的一個工作。這部分主要使用三個函數,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] 

像Excel一樣使用python進行數據分析-(2)

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

  1. #重設索引 
  2. df_inner.reset_index() 

 

像Excel一樣使用python進行數據分析-(2)

  1. #設置日期為索引 
  2. df_inner=df_inner.set_index('date'

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #提取4日之前的所有數據 
  2. df_inner[:'2013-01-04'

 

像Excel一樣使用python進行數據分析-(2)

按位置提取(iloc)

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

  1. #使用iloc按位置區域提取數據 
  2. df_inner.iloc[:3,:2] 

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #使用iloc按位置區域提取數據 
  2. df_inner.iloc[:3,:2] 

 

像Excel一樣使用python進行數據分析-(2)

按標簽和位置提取(ix)

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

  1. #使用ix按索引標簽和位置混合提取數據 
  2. df_inner.ix[:'2013-01-03',:4] 

 

像Excel一樣使用python進行數據分析-(2)

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

除了按標簽和位置提起數據以外,還可以按具體的條件進行數據。下面使用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'])] 

 

像Excel一樣使用python進行數據分析-(2)

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

  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. #提取前三個字符,并生成數據表 
  11. pd.DataFrame(category.str[:3]) 

 

像Excel一樣使用python進行數據分析-(2)

3.數據篩選

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

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

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

像Excel一樣使用python進行數據分析-(2)

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

  1. #使用“與”條件進行篩選  
  2. df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']] 

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #使用“或”條件篩選 
  2. df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort 
  3. (['age']) 

 

像Excel一樣使用python進行數據分析-(2)

在前面的代碼后增加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. 19796 

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

  1. #使用“非”條件進行篩選  
  2. df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']) 

 

像Excel一樣使用python進行數據分析-(2)

在前面的代碼后面增加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"]'

 

像Excel一樣使用python進行數據分析-(2)

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

  1. #對篩選后的結果按price進行求和  
  2. df_inner.query('city == ["beijing", "shanghai"]').price.sum()  
  3. 12230 
責任編輯:未麗燕 來源: 36大數據
相關推薦

2021-12-28 11:23:36

SQLServerExcel數據分析

2017-09-26 19:02:09

PythonInstagram數據分析

2023-04-05 14:19:07

FlinkRedisNoSQL

2019-01-15 14:21:13

Python數據分析數據

2013-12-17 09:02:03

Python調試

2013-12-31 09:19:23

Python調試

2023-05-23 13:59:41

RustPython程序

2013-08-22 10:17:51

Google大數據業務價值

2020-06-05 14:29:07

PythonPandas數據分析

2020-09-30 17:12:09

人工智能技術數據

2021-05-20 08:37:32

multiprocesPython線程

2022-06-09 11:47:21

工具數據儀連接器

2009-12-23 17:50:38

ADO.NET Fra

2017-05-22 10:33:14

PythonJuliaCython

2022-12-21 15:56:23

代碼文檔工具

2021-08-27 06:41:34

Docker ContainerdRun&Exec

2012-12-21 10:42:49

數據分析中土世界數據可視化項目

2013-07-26 10:15:29

云計算大數據Hadoop

2017-11-06 14:18:03

2015-09-23 09:24:56

spark數據分析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产欧美日韩不卡在线观看 | 亚洲图片一区二区三区 | 日本国产高清 | 亚洲精品片 | 亚洲顶级毛片 | 国产精品视频久久久久 | 欧美日韩a | 亚洲二区视频 | 一区二区视频 | 成人一级视频在线观看 | 亚洲福利视频网 | 羞羞涩涩在线观看 | 人人插人人| 亚洲成人自拍 | 看av网| 国产精品久久久精品 | 日本不卡免费新一二三区 | 91色综合 | 欧美视频一区二区三区 | 特黄毛片视频 | 久久不射电影网 | 中国大陆高清aⅴ毛片 | 久久中文字幕一区 | 国产91丝袜在线播放 | 欧美日韩视频在线 | 久久不卡| 日韩精品一区在线 | 日韩精品免费在线 | 亚洲一区在线播放 | 亚洲精品短视频 | 久久精选 | 欧美日韩亚洲在线 | 一级视频黄色 | 在线成人| 99热激情 | 国产区免费视频 | 欧美视频在线播放 | 国产一区二区不卡 | 中文字幕国产在线 | 国产激情片在线观看 | 视频一区二区国产 |