Appearance
数据类型转换
正确的数据类型对于数据分析和内存优化至关重要。
查看数据类型
python
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [1.5, 2.5, 3.5],
'C': ['a', 'b', 'c'],
'D': [True, False, True]
})
# 查看数据类型
print(df.dtypes)
# 查看详细信息
print(df.info())数值类型转换
python
df = pd.DataFrame({
'整数': [1, 2, 3],
'浮点数': [1.5, 2.5, 3.5],
'字符串数字': ['1', '2', '3']
})
# 转换为整数
df['整数'] = df['整数'].astype(int)
# 转换为浮点数
df['浮点数'] = df['浮点数'].astype(float)
# 字符串转数值
df['字符串数字'] = pd.to_numeric(df['字符串数字'])
print(df.dtypes)字符串类型转换
python
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [1.5, 2.5, 3.5]
})
# 转换为字符串
df['A_str'] = df['A'].astype(str)
df['B_str'] = df['B'].astype(str)
print(df.dtypes)日期时间转换
python
df = pd.DataFrame({
'日期字符串': ['2024-01-01', '2024-02-01', '2024-03-01'],
'时间戳': [1704067200, 1706745600, 1709251200]
})
# 字符串转日期
df['日期'] = pd.to_datetime(df['日期字符串'])
# 时间戳转日期
df['日期从时间戳'] = pd.to_datetime(df['时间戳'], unit='s')
print(df.dtypes)
print(df)类别类型转换
python
df = pd.DataFrame({
'类别': ['A', 'B', 'A', 'C', 'B', 'A']
})
# 转换为类别类型
df['类别'] = df['类别'].astype('category')
print(df.dtypes)
# 查看类别
print(df['类别'].cat.categories)
# 重命名类别
df['类别'] = df['类别'].cat.rename_categories({'A': '优秀', 'B': '良好', 'C': '及格'})
print(df)布尔类型转换
python
df = pd.DataFrame({
'是/否': ['是', '否', '是'],
'数值': [1, 0, 1],
'字符串': ['True', 'False', 'True']
})
# 映射转换为布尔值
df['是/否'] = df['是/否'].map({'是': True, '否': False})
# 数值转布尔值
df['数值'] = df['数值'].astype(bool)
print(df.dtypes)内存优化
python
df = pd.DataFrame({
'小整数': [1, 2, 3, 4, 5],
'大整数': [1000000, 2000000, 3000000],
'小数': [1.5, 2.5, 3.5]
})
# 查看内存使用
print(df.memory_usage(deep=True))
# 优化整数类型
df['小整数'] = df['小整数'].astype('int8')
df['大整数'] = df['大整数'].astype('int32')
# 优化浮点数类型
df['小数'] = df['小数'].astype('float32')
print(df.dtypes)
print(df.memory_usage(deep=True))处理转换错误
python
df = pd.DataFrame({
'数值': ['1', '2', 'abc', '4']
})
# 忽略错误
df['数值_忽略'] = pd.to_numeric(df['数值'], errors='ignore')
# 强制转换,错误设为NaN
df['数值_强制'] = pd.to_numeric(df['数值'], errors='coerce')
print(df)合理的数据类型转换可以提高代码效率并减少内存占用。