打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
pandas100个骚操作:变量类型自动转换

关键时间,第一时间送达!

大家好,我是你们的东哥。

本篇是pandas100个骚操作的第一篇:变量类型自动转换

在用pandas进行数据清洗的过程中,变量的类型转换是一个必然会遇到的步骤。清洗初期查看dtypes经常出现object类型,但其实变量本身可能就是个字符串,或者是数字(但因存在空值,导致出现了object类型)。

通常大家所熟知的方法是使用astype进行类型转换,或者自己利用astype造个轮子,写个函数方法实现自动转换类型。

本次东哥介绍一个pandas里可实现自动转换变量类型的方法convert_dtypes。利用它可以一次性全部转换为最理想的类型。

一、使用方法

默认情况下,convert_dtypes将尝试将Series或DataFrame中的每个Series转换为支持的dtypes。它可以对Series和DataFrame都直接使用。

这个方法的参数如下。

# 是否应将对象dtypes转换为最佳类型
infer_objects bool,默认为True

# 对象dtype是否应转换为StringDtype()
convert_string bool,默认为True

# 如果可能,是否可以转换为整数扩展类型
convert_integer bool,默认为True

# 对象dtype是否应转换为BooleanDtypes()
convert_boolean bool,默认为True

# 如果可能,是否可以转换为浮动扩展类型。
# 如果convert_integer也为True,则如果可以将浮点数忠实地转换为整数,则将优先考虑整数dtype
convert_floating bool,默认为True

二、实例

下面看个例子。

首先创建一组数据,通过dtype规定每个变量的类型。

df = pd.DataFrame(
    {
        'a': pd.Series([123], dtype=np.dtype('int32')),
        'b': pd.Series(['x''y''z'], dtype=np.dtype('O')),
        'c': pd.Series([TrueFalse, np.nan], dtype=np.dtype('O')),
        'd': pd.Series(['h''i', np.nan], dtype=np.dtype('O')),
        'e': pd.Series([10, np.nan, 20], dtype=np.dtype('float')),
        'f': pd.Series([np.nan, 100.5200], dtype=np.dtype('float')),
    }
)

DataFraem 变量类型转换

先从整个对dataframe操作开始。

>>> df
   a  b      c    d     e      f
0  1  x   True    h  10.0    NaN
1  2  y  False    i   NaN  100.5
2  3  z    NaN  NaN  20.0  200.0
>>> df.dtypes
a      int32
b     object
c     object
d     object
e    float64
f    float64
dtype: object

通过结果可以看到,变量都是是创建时默认的类型。但其实变量是有整数、字符串、布尔的,其中有的还存在空值。

>>> dfn = df.convert_dtypes()
>>> dfn
   a  b      c     d     e      f
0  1  x   True     h    10   <NA>
1  2  y  False     i  <NA>  100.5
2  3  z   <NA>  <NA>    20  200.0

下面使用convert_dtypes进行转换。

>>> dfn.dtypes
a      Int32
b     string
c    boolean
d     string
e      Int64
f    Float64
dtype: object

变量类型已经转换为我们想要的了。

Series 变量类型转换

对Series的转换也是一样的。下面的Seires中由于存在nan空值所以类型为object

s = pd.Series(['a''b', np.nan])
>>> s
0      a
1      b
2    NaN
dtype: object

然后我们通过convert_dtypes成功转换为String

>>> s.convert_dtypes()
0       a
1       b
2    <NA>
dtype: string

如果未来增加了新类型,convert_dtypes方法也会同步更新,并支持新的变量类型。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
小白也能看懂的Pandas实操演示教程(下)
数据科学必备统计基础用Python描述你的数据的正确姿势
Pandas中文官档 ~ 基础用法1
pandas中category类型的数据处理
pandas 缺失数据处理大全(附代码)
用过都说好!12个Pandas和NumPy函数,让你处理数据更轻松
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服