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

11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例)

開(kāi)發(fā) 后端
本文為你介紹Pandas隱藏的炫酷小技巧,我相信這些會(huì)對(duì)你有所幫助。或許本文中的某些命令你早已知曉,只是沒(méi)意識(shí)到它還有這種打開(kāi)方式。

本文為你介紹Pandas隱藏的炫酷小技巧,我相信這些會(huì)對(duì)你有所幫助。

或許本文中的某些命令你早已知曉,只是沒(méi)意識(shí)到它還有這種打開(kāi)方式。

 

Pandas是一個(gè)在Python中廣泛應(yīng)用的數(shù)據(jù)分析包。市面上有很多關(guān)于Pandas的經(jīng)典教程,但本文介紹幾個(gè)隱藏的炫酷小技巧,我相信這些會(huì)對(duì)你有所幫助。

1. read_csv

這是讀取數(shù)據(jù)的入門(mén)級(jí)命令。當(dāng)要你所讀取的數(shù)據(jù)量特別大時(shí),試著加上這個(gè)參數(shù)nrows = 5,就可以在載入全部數(shù)據(jù)前先讀取一小部分?jǐn)?shù)據(jù)。如此一來(lái),就可以避免選錯(cuò)分隔符這樣的錯(cuò)誤啦(數(shù)據(jù)不一定都是用逗號(hào)來(lái)分隔)。

(或者在linux系統(tǒng)中,你可以使用‘head’來(lái)展示任意文本文件的前五行:head -c 5 data.txt)

接下來(lái),用 df.columns.tolist() 可以提取每一列并轉(zhuǎn)換成list。還可以加上usecols = [‘c1’, ‘c2’, … ]來(lái)載入所需要的指定列。另外,如果你知道某些列的類(lèi)型,你可以加上dtype = {‘c1’: str, ‘c2’: int, …} ,這樣會(huì)加快載入的速度。加入這些參數(shù)的另一大好處是,如果這一列中同時(shí)含有字符串和數(shù)值類(lèi)型,而你提前聲明把這一列看作是字符串,那么這一列作為主鍵來(lái)融合多個(gè)表時(shí),就不會(huì)報(bào)錯(cuò)了。

2. select_dtypes

如果已經(jīng)在Python中完成了數(shù)據(jù)的預(yù)處理,這個(gè)命令可以幫你節(jié)省一定的時(shí)間。在讀取了表格之后,每一列的默認(rèn)數(shù)據(jù)類(lèi)型將會(huì)是bool,int64,float64,object,category,timedelta64,或者datetime64。首先你可以觀察一下大致情況,使用:

  1. df.dtypes.value_counts() 

來(lái)了解你的dataframe的每項(xiàng)數(shù)據(jù)類(lèi)型,然后再使用:

  1. df.select_dtypes(include=['float64''int64']) 

獲取一個(gè)僅由數(shù)值類(lèi)型組成的sub-dataframe。

3. copy

如果你沒(méi)聽(tīng)說(shuō)過(guò)它的話,我不得強(qiáng)調(diào)它的重要性。輸入下面的命令:

  1. import pandas as pd 
  2. df1 = pd.DataFrame({ 'a':[0,0,0], 'b': [1,1,1]}) 
  3. df2 = df1 
  4. df2['a'] = df2['a'] + 1 
  5. df1.head() 

你會(huì)發(fā)現(xiàn)df1已經(jīng)發(fā)生了改變。這是因?yàn)閐f2 = df1并不是生成一個(gè)df1的復(fù)制品并把它賦值給df2,而是設(shè)定一個(gè)指向df1的指針。所以只要是針對(duì)df2的改變,也會(huì)相應(yīng)地作用在df1上。為了解決這個(gè)問(wèn)題,你既可以這樣做:

  1. df2 = df1.copy() 

也可以這樣做:

  1. from copy import deepcopy 
  2. df2 = deepcopy(df1) 

4. map

這個(gè)炫酷的命令讓你的數(shù)據(jù)轉(zhuǎn)換變得輕松。首先定義一個(gè)

dictionary,“key”是轉(zhuǎn)換前的舊值,而“values”是轉(zhuǎn)換后的新值。

  1. level_map = {1: 'high', 2: 'medium', 3: 'low'
  2. df['c_level'] = df['c'].map(level_map) 

幾個(gè)適用情景:把True、False,轉(zhuǎn)換成1、0(為了建模);定義級(jí)別;使用字典編碼。

5. 用不用apply?

如果我們想在現(xiàn)有幾列的基礎(chǔ)上生成一個(gè)新列,并一同作為輸入,那么有時(shí)apply函數(shù)會(huì)相當(dāng)有幫助。

  1. def rule(x, y): 
  2.  if x == 'high' and y > 10: 
  3.  return 1 
  4.  else
  5.  return 0 
  6. df = pd.DataFrame({ 'c1':[ 'high' ,'high''low''low'], 'c2': [0, 23, 17, 4]}) 
  7. df['new'] = df.apply(lambda x: rule(x['c1'], x['c2']), axis = 1) 
  8. df.head() 

在上面的代碼中,我們定義了一個(gè)有兩個(gè)輸入變量的函數(shù),并依靠apply函數(shù)使其作用到列“c1”和“c2”上。

但是apply函數(shù)在有些情況下實(shí)在是太慢了。如果你是想計(jì)算“c1”和“c2”列的***值,你當(dāng)然可以這樣去做:

  1. df['maximum'] = df.apply(lambda x: max(x['c1'], x['c2']), axis = 1) 

但你會(huì)發(fā)現(xiàn)相比于以下命令,apply實(shí)在是慢太多了:

  1. df['maximum'] = df[['c1','c2']].max(axis =1) 

結(jié)論:如果你可以采用其他內(nèi)置函數(shù)(他們一般速度更快),請(qǐng)不要使用apply。比如說(shuō),如果你想把“c”列的值近似取整,那么請(qǐng)用round(df[‘c’], 0)或df['c'],round(0)而不是上文的apply函數(shù)。

7. value counts

這個(gè)命令用于檢查值的分布。你想要檢查下“c”列中出現(xiàn)的值以及每個(gè)值所出現(xiàn)的頻率,可以使用:

  1. df['c'].value_counts( 

下面是一些有用的小技巧/參數(shù):

  • normalize = True:查看每個(gè)值出現(xiàn)的頻率而不是頻次數(shù)。
  • dropna = False: 把缺失值也保留在這次統(tǒng)計(jì)中。
  • sort = False: 將數(shù)據(jù)按照值來(lái)排序而不是按照出現(xiàn)次數(shù)排序。
  • df[‘c].value_counts().reset_index(): 將這個(gè)統(tǒng)計(jì)表轉(zhuǎn)換成pandas的dataframe并且進(jìn)行處理。

8. 缺失值的數(shù)量

當(dāng)構(gòu)建模型時(shí),我們可能會(huì)去除包含過(guò)多缺失值或是全部是缺失值的行。這時(shí)可以使用.isnull()和.sum()來(lái)計(jì)算指定列缺失值的數(shù)量。

  1. import pandas as pd 
  2. import numpy as np 
  3. df = pd.DataFrame({ 'id': [1,2,3], 'c1':[0,0,np.nan], 'c2': [np.nan,1,1]}) 
  4. df = df[['id''c1''c2']] 
  5. df['num_nulls'] = df[['c1''c2']].isnull().sum(axis=1) 
  6. df.head() 

在SQL中我們可以使用 SELECT * FROM … WHERE ID in (‘A001’,‘C022’, …)來(lái)獲取含有指定ID的記錄。如果你也想在Pandas中做類(lèi)似的事情,你可以使用:

  1. df_filter = df['ID'].isin(['A001','C022',...]) 
  2. df[df_filter] 

10. 基于分位數(shù)分組

面對(duì)一列數(shù)值,你想將這一列的值進(jìn)行分組,比如說(shuō)最前面的5%放入組別一,5-20%放入組別二,20%-50%放入組別三,***的50%放入組別四。當(dāng)然,你可以使用pandas.cut,但你也可以使用下面這種選擇:

  1. import numpy as np 
  2. cut_points = [np.percentile(df['c'], i) for i in [50, 80, 95]] 
  3. df['group'] = 1 
  4. for i in range(3): 
  5.  df['group'] = df['group'] + (df['c'] < cut_points[i]) 
  6. or <= cut_points[i] 

這種方法的運(yùn)行速度很快(并沒(méi)有使用到apply函數(shù))。

11. to_csv

這又是一個(gè)大家都會(huì)用的命令。我想在這里列出兩個(gè)小技巧。首先是

  1. print(df[:5].to_csv()) 

你可以使用這個(gè)命令打印出將要輸出文件中的前五行記錄。

另一個(gè)技巧是用來(lái)處理整數(shù)值和缺失值混淆在一起的情況。如果一列含有缺失值和整數(shù)值,那么這一列的數(shù)據(jù)類(lèi)型會(huì)變成float而不是int。當(dāng)導(dǎo)出表格時(shí),你可以加上float_format=‘%.0f’以便將所有的浮點(diǎn)數(shù)近似成整數(shù)。當(dāng)你想把所有列的輸出值都變成整數(shù)格式時(shí),就可以使用這個(gè)技巧,這樣一來(lái)你就會(huì)告別所有數(shù)值后帶“.0”的煩惱。

原文標(biāo)題:

10 PythonPandas tricks that make your work more efficient

原文鏈接:

https://towardsdatascience.com/10-python-pandas-tricks-that-make-your-work-more-efficient-2e8e483808ba

譯者簡(jiǎn)介

 

[[264020]]

 

吳振東,法國(guó)洛林大學(xué)計(jì)算機(jī)與決策專(zhuān)業(yè)碩士。現(xiàn)從事人工智能和大數(shù)據(jù)相關(guān)工作,以成為數(shù)據(jù)科學(xué)家為終生奮斗目標(biāo)。來(lái)自山東濟(jì)南,不會(huì)開(kāi)挖掘機(jī),但寫(xiě)得了Java、Python和PPT。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2024-02-26 16:40:58

2019-01-29 15:40:06

云應(yīng)用開(kāi)發(fā)云環(huán)境

2015-03-16 16:56:54

開(kāi)發(fā)技巧應(yīng)用孤島PaaS

2019-11-25 10:20:54

CSS代碼javascript

2011-08-29 09:33:48

2009-10-27 09:09:06

Eclipse技巧

2024-01-08 17:09:07

Python解釋器CPython

2018-06-20 11:00:06

云應(yīng)用開(kāi)發(fā)PaaS

2022-01-06 22:31:21

Python技巧代碼

2024-01-19 13:45:00

Pandas代碼深度學(xué)習(xí)

2023-07-26 07:41:53

Python線程狀態(tài)

2020-08-06 00:25:38

Python代碼開(kāi)發(fā)

2024-06-24 00:05:00

Python代碼

2024-08-19 00:35:00

Pythondict遍歷列表推導(dǎo)式

2023-12-06 13:43:00

python代碼

2010-12-23 15:55:00

上網(wǎng)行為管理

2020-07-08 17:06:00

Python開(kāi)發(fā)工具

2023-11-07 08:25:34

API接口參數(shù)驗(yàn)證

2019-12-25 14:19:21

Python編程語(yǔ)言Java

2019-01-29 05:34:47

GitHub插件代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 日韩在线日韩 | 精品国产免费一区二区三区五区 | 欧美视频网| 欧洲视频一区二区 | 色欧美片视频在线观看 | 91成人小视频 | 欧美一区成人 | 国产黄色一级片 | 男女羞羞免费视频 | 337p日本欧洲亚洲大胆鲁鲁 | 国产一区二区在线播放视频 | av在线视 | 丁香五月网久久综合 | 欧美亚洲一区二区三区 | 欧美视频免费在线观看 | 美国a级毛片免费视频 | 中文字幕日韩一区二区 | 国产一区二区欧美 | 久久乐国产精品 | 欧美日韩一卡 | 理论片87福利理论电影 | 国产第一页在线观看 | www.操.com| 成人午夜免费视频 | 日韩伦理电影免费在线观看 | 97色伦网 | 国产精品久久久久久久7777 | 国产精品一码二码三码在线 | 天天射色综合 | 一区二区中文字幕 | 在线观看免费国产 | 日韩在线h | 欧美在线一区二区三区 | 亚洲一级淫片 | av国产精品 | 青青草亚洲 | 在线观看视频91 | 久久成人精品 | 免费观看一级毛片 | 国产精品a一区二区三区网址 |