Pandas0.25来了千万别错过这10大好用的新功能
Pandas是Python中常用的数据分析库之一,它提供了很多方便数据操作的功能,如数据预处理、清洗、建模等。Pandas 0.25版本带来了许多新功能,下面我们来一一解析。
1. 新的字符串操作(String Methods)
Pandas 0.25中增加了一种可直接在Series和Index上进行的新的字符串方法—— .str
。在处理数据时,我们经常需要对字符类型的Series或Dataframe的某一列进行处理,这时可以使用这种方法:
import pandas as pd
s = pd.Series(['cat','dog','snake'])
s.str.upper()
在上例中,s.str.upper()
把字符串中的字母全部转换成大写字母,得到的结果为:
0 CAT
1 DOG
2 SNAKE
dtype: object
2. 计算缺失值比例(Missing Values Percentage)
在处理数据时,经常需要计算缺失值的比例或直接删除缺失值。Pandas 0.25中新增了一个值得关注的函数—— pandas.DataFrame.isna()
,它可以帮助我们计算出DataFrame中所有列的缺失值比例。比如:
import pandas as pd
train = pd.read_csv('train.csv')
for col in train.columns:
pct_missing = train[col].isna().mean()
print(f'{col} - {pct_missing :.1%}')
运行结束后,会输出每列的缺失值比例,像这样:
col1 - 10.5%
col2 - 0.3%
col3 - 3.4%
col4 - 20.0%
col5 - 80.3%
3. stacking和unstacking的优化(Optimizations for Stacking and Unstacking)
Pandas 0.25对stacking和unstacking函数进行了一些优化,这些函数在整理多维数据(例如交叉制表操作)时用了。具体的方法可以查看Pandas的文档。
4. 可选的2阶的method参数
在一些需要使用rolling
函数的场景中,我们需要在有缺失值的情况下进行计算。但此前当数据中存在缺失值时rolling
函数无法计算,Python会直接抛出异常。为了解决这个问题,Pandas 0.25提供了一个新的可选参数method = 'min'
或method = 'max'
,这两个参数可以用来选择当存在缺失值时,应参考缺失值前后的两个数字的哪一个进行计算。示例如下:
import pandas as pd
data=[1,2,3,None,4,None,5,None, 6, None, 7, None, None, 8, 9, 10]
df=pd.DataFrame(data)
# Use both ffill and bfill to deal with NaN/missing values
df.interpolate(method='linear',limit_direction='forward',limit=2)
在上面的例子中,method='linear'
表示采用线性插值处理空缺值,另外limit_direction
和limit
分别指定了插值时的限制方向和最大连续缺失值数量。
5. 更快的Groupby
对一个DataFrame进行分组操作时,我们通常会使用groupby函数。在Pandas 0.25中,groupby
操作会更加快速和稳定。同时在应用函数时,我们可以使用assign
函数来代替transform
,这样可以获得更快的速度。
6. DataFrame.to_numpy()用户自定义dtypes的支持
Pandas中的DataFrame.to_numpy()
方法可以将DataFrame转换为NumPy数组,这个方法在Pandas 0.25中增加了对用户自定义dtypes的支持。用户现在可以将DataFrame转换为任何类型的NumPy数组了。
7. 改进的Rolling函数
pandas.DataFrame.rolling()
函数现在支持三种Rolling方式——rolling
, expanding
, 和ewm
。这些函数都被重新设计过,更加高效,支持方便的计算和筛选,具体详细可以参考文档。
8. 改进的Categorical类型
在Pandas 0.25中,Categorical
类型支持了一个新的方法——to_numpy()
。同时该类型还更加高效,并且支持了更多的运算符重载。
9. 自定义Rolling运算
在Pandas 0.25中,rolling
函数提供了自定义Rolling运算的方法,我们可以使用自己编写的函数来进行计算。比如下面的示例:
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(10, 3))
df.rolling(window=3, min_periods=1).apply(lambda x:np.max(x) - np.min(x), raw=True)
在上面的示例中,我们使用apply
函数将自己编写的匿名函数传递给了rolling
函数进行累计计算。
10. 改进的Datetime类型
在Pandas 0.25中,Datetime类型增加了一些新方法,包括asfreq
和infer_objects
。另外,这个类型中的to_pydatetime
方法现在支持了tz_localize
、“”tz_localize21等等。这个类型还支持了一些新的时间戳格式,包括X
、E
和e
。
至此,我们介绍了10个Pandas 0.25中的新功能。这些新功能不仅可以更快地完成许多常见的数据处理任务,还提高了Pandas的稳定性和易用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas0.25来了千万别错过这10大好用的新功能 - Python技术站