Pandas数据分析07——pandas数据类型的转换

 参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》


pandas的数据类型有很多,一列一种,但是可以相互转换。主要是用astype的方法

首先读取案例数据

import numpy as np
import pandas as pd 
import datetime
data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data) 

数据初始化时指定类型

df = pd.DataFrame(data, dtype='float32') # 对所的字段指定类型
 # 每个字段分别指定
df = pd.read_excel(data, dtype={'team': 'string', 'Q1': 'int32'})

推断类型

# 自动转换合适的数据类型
df.convert_dtypes() # 推荐!新的方法,支持 string 类型
df.infer_objects()
df.infer_objects().dtypes
df.convert_dtypes().dtypes

指定类型

# 按大体类型推定
m = ['1', 2, 3]
s = pd.to_numeric(m) # 转成数字
pd.to_datetime(m) # 转成时间
pd.to_timedelta(m) # 转成时差
pd.to_datetime(m, errors='coerce') # 错误处理
pd.to_numeric(m, errors='ignore')
pd.to_numeric(m ,errors='coerce').fillna(0) # 兜底填充
pd.to_datetime(df[['year', 'month', 'day']]) # 组合成日期
## 应用函数
df.apply(pd.to_timedelta) #pd.to_numeric

类型转化

df.dtypes # 查看数据类型
df.Q1.astype('int32').dtypes #dtype('int32')
df.index.astype('int64') # 索引类型转换
df.astype('int32') # 所有数据转换为 int32
df.astype({'col1': 'int32'}) # 指定字段转指定类型
s.astype('int64')
s.astype('int64', copy=False) # 不与原数据关联
s.astype(np.uint8)
df['name'].astype('object')
data['Q4'].astype('float')
s.astype('datetime64[ns]')
data['状态'].astype('bool')

转换时间

#常用 pd.to_datetime() 和 s.astype('datetime64[ns]')
t=pd.Series(['20210806','20210808'])
pd.to_datetime(t)
t.astype('datetime64[ns]')

数据框类型的转化

pandas v0.24.0 引入了从 pandas 对象获取 NumPy 数组的新方法:

ds.to_numpy(), 它可以用在 Index, Series, 和 DataFrame 对象,

还可以np.array(ds),转化为数组类型。

不推荐用.values,因为可能未来会弃用。

df.to_numpy()
'''
array([['Liver', 'E', 89, 21, 24, 64],
       ['Arry', 'C', 36, 37, 37, 57],
       ['Ack', 'A', 57, 60, 18, 84],
       ...
       ['Eli', 'E', 11, 74, 58, 91],
       ['Ben', 'E', 21, 43, 41, 74]], dtype=object)


np.array(df) # Dataframe 转
np.array(df.Q1) # 直接转
np.array(df.Q1.array) # PandasArray 转
np.array(df.to_records().view(type=np.matrix)) # 转为矩阵

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值