千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:济南千锋IT培训  >  技术干货  >  pandas操作:变量类型自动转换

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

来源:千锋教育
发布人:qyf
时间: 2023-02-23 19:19:10

  本篇是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方法也会同步更新,并支持新的变量类型。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

shiro是什么?

2023-06-06

10个最难的Python问题!

2023-02-23

解决日常问题的12个Python Pro Snippets

2023-02-23

最新文章NEW

html和html5的概念

2023-04-20

pandas操作:JSON自动解析为DataFrame

2023-02-24

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

2023-02-23

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>