Pandas的5個高效函式

2021-10-12 16:41:45 字數 4389 閱讀 3904

一、explode

explode用於將一行資料展開成多行。比如說dataframe中某一行其中乙個元素包含多個同型別的資料,若想要展開成多行進行分析,這時候explode就派上用場,而且只需一行**,非常節省時間。

用法

dataframe.explode(self, column: union[str, tuple])

引數作用

column :str 或 tuple

示例:以下表中第三行、第二列為例,展開[2,3,8]

# 先建立表

使用explode輕鬆將[2,3,8]轉換成多行,且行內其他元素保持不變。

二、nunique

nunique用於計算行或列上唯一值的數量,即去重後計數。這個函式在分類問題中非常實用,當不知道某字段中有多少類元素時,nunique能快速生成結果。

用法:

series.nunique(dropna=true)

dataframe.nunique(axis=0, dropna=true)

引數作用:

axis:int型,0代表行,1代表列,預設0;

dropna:bool型別,預設為true,計數中不包括nan;

示例:

先建立乙個df:

對year列進行唯一值計數:

df.year.nunique()      

輸出:10對整個dataframe的每乙個字段進行唯一值計數

三、infer_objects

infer_objects用於將object型別列推斷為更合適的資料型別

用法:

# 直接將df或者series推斷為合適的資料型別

dataframe.infer_objects()

pandas支援多種資料型別,其中之一是object型別。object型別包括字串和混合值(數字及非數字)。

object型別比較寬泛,如果可以確定為具體資料型別,則不建議用object。

使用infer_objects方法將object推斷為int型別:

print(df.infer_objects().dtypes)

##結果

a int64

dtype: object

四、memory_usage

memory_usage用於計算dataframe每一列的位元組儲存大小,這對於大資料表非常有用。

用法:

dataframe.memory_usage(index=true, deep=false)

引數解釋:

index:指定是否返回df中索引位元組大小,預設為true,返回的第一行即是索引的記憶體使用情況;

deep:如果為true,則通過查詢object型別進行系統級記憶體消耗來深入地檢查資料,並將其包括在返回值中。

示例:首先建立乙個df,共2列,1000000行。

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import pandas as pd

import numpy as np

df_large = pd.dataframe()

print(df_large.shape)

##結果輸出

(1000000, 2)

返回每一列的占用位元組大小:

print(df_large.memory_usage())
第一行是索引index的記憶體情況,其餘是各列的記憶體情況。

五、replace

顧名思義,replace是用來替換df中的值,賦以新的值

用法:

dataframe.replace(to_replace=none, value=none, inplace=false, limit=none, regex=false, method=『pad』)

引數解釋:

to_replace:被替換的值

value:替換後的值

inplace:是否要改變原資料,false是不改變,true是改變,預設是false

limit:控制填充次數

regex:是否使用正則,false是不使用,true是使用,預設是false

method:填充方式,pad,ffill,bfill分別是向前、向前、向後填充

建立乙個df:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import pandas as pd

import numpy as np

values_1 = np.random.randint(10, size=10)

values_2 = np.random.randint(10, size=10)

years = np.arange(2010,2020)

groups = ['a','a','b','a','b','b','c','a','c','c']

df = pd.dataframe()

print(df)

將a全部替換為d:

df.replace('a','d')
將b替換為e,c替換為f:

5個實用的Pandas技巧

效率已成為及時完成工作的關鍵因素。乙個人不應該花超過合理的時間去完成事情。尤其是當任務涉及基本編碼時。使用pandas庫能節省你的時間。pandas是乙個開源包。它有助於用python語言執行資料分析和資料操作。此外,它還為我們提供了靈活的資料結構。目錄 pandas技巧1 行的條件選擇 首先,資料...

pandas的時間日期高效操作

29 pandas的時間日期高效操作 探索資料之美 0.395 2018.01.02 11 27 56 字數 656 閱讀 8,288 在前面的文章中,我們總結了一下關於時間日期的簡單計算,但是我們發現很多功能都是datetime庫提供的,那麼pandas有沒有提供跟日期時間有關的函式呢?自然是有的...

pandas的連線函式concat 函式

pd.concat objs,axis 0,join outer join axes none,ignore index false,keys none,levels none,names none,verify integrity false,copy true 引數含義 key引數 join引數...