真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

小編給大家分享一下像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)是一家專(zhuān)注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、微信小程序、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10余年以來(lái),已經(jīng)為近千家成都紗窗各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的近千家客戶(hù)與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。

Excel是數(shù)據(jù)分析中最常用的工具,本篇文章通過(guò)python與excel的功能對(duì)比介紹如何使用python通過(guò)函數(shù)式編程完成excel中的數(shù)據(jù)處理及分析工作。在Python中pandas庫(kù)用于數(shù)據(jù)處理,我們從1787頁(yè)的pandas官網(wǎng)文檔中總結(jié)出最常用的36個(gè)函數(shù),通過(guò)這些函數(shù)介紹如何通過(guò)python完成數(shù)據(jù)生成和導(dǎo)入,數(shù)據(jù)清洗,預(yù)處理,以及最常見(jiàn)的數(shù)據(jù)分類(lèi),數(shù)據(jù)篩選,分類(lèi)匯總,透視等最常見(jiàn)的操作。

1.數(shù)據(jù)預(yù)處理

這部分是數(shù)據(jù)的預(yù)處理,對(duì)清洗完的數(shù)據(jù)進(jìn)行整理以便后期的統(tǒng)計(jì)和分析工作。主要包括數(shù)據(jù)表的合并,排序,數(shù)值分列,數(shù)據(jù)分組及標(biāo)記等工作。

數(shù)據(jù)表合并

首先是對(duì)不同的數(shù)據(jù)表進(jìn)行合并,我們這里創(chuàng)建一個(gè)新的數(shù)據(jù)表df1,并將df和df1兩個(gè)數(shù)據(jù)表進(jìn)行合并。在Excel中沒(méi)有直接完成數(shù)據(jù)表合并的功能,可以通過(guò)VLOOKUP函數(shù)分步實(shí)現(xiàn)。在python中可以通過(guò)merge函數(shù)一次性實(shí)現(xiàn)。下面建立df1數(shù)據(jù)表,用于和df數(shù)據(jù)表進(jìn)行合并。

#創(chuàng)建df1數(shù)據(jù)表 df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], "gender":['male','female','male','female','male','female','male','female'], "pay":['Y','N','Y','Y','N','Y','N','Y',], "m-point":[10,12,20,40,40,40,30,20]})

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

使用merge函數(shù)對(duì)兩個(gè)數(shù)據(jù)表進(jìn)行合并,合并的方式為inner,將兩個(gè)數(shù)據(jù)表中共有的數(shù)據(jù)匹配到一起生成新的數(shù)據(jù)表。并命名為df_inner。

#數(shù)據(jù)表匹配合并,inner模式 df_inner=pd.merge(df,df1,how='inner')

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

除了inner方式以外,合并的方式還有l(wèi)eft,right和outer方式。這幾種方式的差別在我其他的文章中有詳細(xì)的說(shuō)明和對(duì)比。

#其他數(shù)據(jù)表匹配模式 df_left=pd.merge(df,df1,how='left') df_right=pd.merge(df,df1,how='right') df_outer=pd.merge(df,df1,how='outer')

設(shè)置索引列

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

設(shè)置索引的函數(shù)為set_index。

#設(shè)置索引列 df_inner.set_index('id')

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

排序(按索引,按數(shù)值)

Excel中可以通過(guò)數(shù)據(jù)目錄下的排序按鈕直接對(duì)數(shù)據(jù)表進(jìn)行排序,比較簡(jiǎn)單。Python中需要使用ort_values函數(shù)和sort_index函數(shù)完成排序。

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

在python中,既可以按索引對(duì)數(shù)據(jù)表進(jìn)行排序,也可以看制定列的數(shù)值進(jìn)行排序。首先我們按age列中用戶(hù)的年齡對(duì)數(shù)據(jù)表進(jìn)行排序。

使用的函數(shù)為sort_values。

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

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

Sort_index函數(shù)用來(lái)將數(shù)據(jù)表按索引列的值進(jìn)行排序。

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

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

數(shù)據(jù)分組

Excel中可以通過(guò)VLOOKUP函數(shù)進(jìn)行近似匹配來(lái)完成對(duì)數(shù)值的分組,或者使用“數(shù)據(jù)透視表”來(lái)完成分組。相應(yīng)的  python中使用where函數(shù)完成數(shù)據(jù)分組。

Where函數(shù)用來(lái)對(duì)數(shù)據(jù)進(jìn)行判斷和分組,下面的代碼中我們對(duì)price列的值進(jìn)行判斷,將符合條件的分為一組,不符合條件的分為另一組,并使用group字段進(jìn)行標(biāo)記。

#如果price列的值>3000,group列顯示high,否則顯示low df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

除了where函數(shù)以外,還可以對(duì)多個(gè)字段的值進(jìn)行判斷后對(duì)數(shù)據(jù)進(jìn)行分組,下面的代碼中對(duì)city列等于beijing并且price列大于等于4000的數(shù)據(jù)標(biāo)記為1。

#對(duì)復(fù)合多個(gè)條件的數(shù)據(jù)進(jìn)行分組標(biāo)記 df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

數(shù)據(jù)分列

與數(shù)據(jù)分組相反的是對(duì)數(shù)值進(jìn)行分列,Excel中的數(shù)據(jù)目錄下提供“分列”功能。在python中使用split函數(shù)實(shí)現(xiàn)分列。

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

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

#對(duì)category字段的值依次進(jìn)行分列,并創(chuàng)建數(shù)據(jù)表,索引值為df_inner的索引列,列名稱(chēng)為category和size pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

#將完成分列后的數(shù)據(jù)表與原df_inner數(shù)據(jù)表進(jìn)行匹配 df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

2.數(shù)據(jù)提取

第五部分是數(shù)據(jù)提取,也是數(shù)據(jù)分析中最常見(jiàn)的一個(gè)工作。這部分主要使用三個(gè)函數(shù),loc,iloc和ix,loc函數(shù)按標(biāo)簽值進(jìn)行提取,iloc按位置進(jìn)行提取,ix可以同時(shí)按標(biāo)簽和位置進(jìn)行提取。下面介紹每一種函數(shù)的使用方法。

按標(biāo)簽提取(loc)

Loc函數(shù)按數(shù)據(jù)表的索引標(biāo)簽進(jìn)行提取,下面的代碼中提取了索引列為3的單條數(shù)據(jù)。

#按索引提取單行的數(shù)值 df_inner.loc[3] id 1004 date 2013-01-05 00:00:00 city shenzhen category 110-C age 32 price 5433 gender female m-point 40 pay Y group high sign NaN category_1 110 size C Name: 3, dtype: object

使用冒號(hào)可以限定提取數(shù)據(jù)的范圍,冒號(hào)前面為開(kāi)始的標(biāo)簽值,后面為結(jié)束的標(biāo)簽值。下面提取了0到5的數(shù)據(jù)行。

#按索引提取區(qū)域行數(shù)值 df_inner.loc[0:5]

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

Reset_index函數(shù)用于恢復(fù)索引,這里我們重新將date字段的日期設(shè)置為數(shù)據(jù)表的索引,并按日期進(jìn)行數(shù)據(jù)提取。

#重設(shè)索引 df_inner.reset_index()

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

#設(shè)置日期為索引 df_inner=df_inner.set_index('date')

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

使用冒號(hào)限定提取數(shù)據(jù)的范圍,冒號(hào)前面為空表示從0開(kāi)始。提取所有2013年1月4日以前的數(shù)據(jù)。

#提取4日之前的所有數(shù)據(jù) df_inner[:'2013-01-04']

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

按位置提取(iloc)

使用iloc函數(shù)按位置對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行提取,這里冒號(hào)前后的數(shù)字不再是索引的標(biāo)簽名稱(chēng),而是數(shù)據(jù)所在的位置,從0開(kāi)始。

#使用iloc按位置區(qū)域提取數(shù)據(jù) df_inner.iloc[:3,:2]

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

iloc函數(shù)除了可以按區(qū)域提取數(shù)據(jù),還可以按位置逐條提取,前面方括號(hào)中的0,2,5表示數(shù)據(jù)所在行的位置,后面方括號(hào)中的數(shù)表示所在列的位置。

#使用iloc按位置區(qū)域提取數(shù)據(jù) df_inner.iloc[:3,:2]

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

按標(biāo)簽和位置提取(ix)

ix是loc和iloc的混合,既能按索引標(biāo)簽提取,也能按位置進(jìn)行數(shù)據(jù)提取。下面代碼中行的位置按索引日期設(shè)置,列按位置設(shè)置。

#使用ix按索引標(biāo)簽和位置混合提取數(shù)據(jù) df_inner.ix[:'2013-01-03',:4]

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

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

除了按標(biāo)簽和位置提起數(shù)據(jù)以外,還可以按具體的條件進(jìn)行數(shù)據(jù)。下面使用loc和isin兩個(gè)函數(shù)配合使用,按指定條件對(duì)數(shù)據(jù)進(jìn)行提取 。

使用isin函數(shù)對(duì)city中的值是否為beijing進(jìn)行判斷。

#判斷city列的值是否為beijing df_inner['city'].isin(['beijing'])  date 2013-01-02 True 2013-01-05 False 2013-01-07 True 2013-01-06 False 2013-01-03 False 2013-01-04 False Name: city, dtype: bool

將isin函數(shù)嵌套到loc的數(shù)據(jù)提取函數(shù)中,將判斷結(jié)果為T(mén)ure數(shù)據(jù)提取出來(lái)。這里我們把判斷條件改為city值是否為beijing和  shanghai。如果是就把這條數(shù)據(jù)提取出來(lái)。

#先判斷city列里是否包含beijing和shanghai,然后將復(fù)合條件的數(shù)據(jù)提取出來(lái)。 df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

數(shù)值提取還可以完成類(lèi)似數(shù)據(jù)分列的工作,從合并的數(shù)值中提取出制定的數(shù)值。

category=df_inner['category'] 0 100-A 3 110-C 5 130-F 4 210-A 1 100-B 2 110-A Name: category, dtype: object  #提取前三個(gè)字符,并生成數(shù)據(jù)表 pd.DataFrame(category.str[:3])

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

3.數(shù)據(jù)篩選

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

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

Excel數(shù)據(jù)目錄下提供了“篩選”功能,用于對(duì)數(shù)據(jù)表按不同的條件進(jìn)行篩選。Python中使用loc函數(shù)配合篩選條件來(lái)完成篩選功能。配合sum和count函數(shù)還能實(shí)現(xiàn)excel中sumif和countif函數(shù)的功能。

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

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

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

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

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

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

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

在前面的代碼后增加price字段以及sum函數(shù),按篩選后的結(jié)果將price字段值進(jìn)行求和,相當(dāng)于excel中sumifs的功能。

#對(duì)篩選后的數(shù)據(jù)按price字段進(jìn)行求和 df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender','price']].sort(['age']).price.sum()  19796

使用“非”條件進(jìn)行篩選,城市不等于beijing。符合條件的數(shù)據(jù)有4條。將篩選結(jié)果按id列進(jìn)行排序。

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

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

在前面的代碼后面增加city列,并使用count函數(shù)進(jìn)行計(jì)數(shù)。相當(dāng)于excel中的countifs函數(shù)的功能。

#對(duì)篩選后的數(shù)據(jù)按city列進(jìn)行計(jì)數(shù) df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count() 4

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

#使用query函數(shù)進(jìn)行篩選 df_inner.query('city == ["beijing", "shanghai"]')

像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析

在前面的代碼后增加price字段和sum函數(shù)。對(duì)篩選后的price字段進(jìn)行求和,相當(dāng)于excel中的sumifs函數(shù)的功能。

#對(duì)篩選后的結(jié)果按price進(jìn)行求和  df_inner.query('city == ["beijing", "shanghai"]').price.sum()  12230

看完了這篇文章,相信你對(duì)“像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站欄目:像Excel一樣如何使用python進(jìn)行數(shù)據(jù)分析
網(wǎng)站地址:http://weahome.cn/article/pipehd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部