全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  详情

pandas操作:变量类型自动转换

来源:千锋教育
发布人:qyf
2023-02-23

推荐

在线提问>>

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

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

pandas操作:变量类型自动转换

  通常大家所熟知的方法是使用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([1, 2, 3], dtype=np.dtype("int32")),

  "b": pd.Series(["x", "y", "z"], dtype=np.dtype("O")),

  "c": pd.Series([True, False, 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.5, 200], dtype=np.dtype("float")),

  }

  )

  DataFrame 变量类型转换

  先从整个对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

  1 2 y False i100.5

  2 3 z20 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

  dtype: string

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

相关文章

shiro是什么?

jsp九大内置对象是什么?

jquery获取属性值

html和html5的概念

字符串和字符数组有何区别

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取