自学笔记|为什么使用df.info(),查看某一列类型,那一列是数字,但是显示是object类

如果某一列的数据类型显示为object,但实际存储的是数字型数据,通常有以下两种可能原因

1.该列包含了非数字型的数据或者缺失值(例如NaN),导致该列类型被自动解析为了object类型。在这种情况下,需要将该列中的非数字型数据或者缺失值进行处理或替换后,再将该列数据类型转换为数字型(例如int、float)。

2.该列中存储的确实是数值型数据,但是读入数据时没有成功地解析出数据类型。这种情况下,通常可以使用函数pd.to_numeric()对该列进行强制类型转换,以将该列数据类型转换为数字型。

# 将df中的列col1从object类型转换为float类型:
df['col1'] = pd.to_numeric(df['col1'], errors='coerce')

修改前后对比

 object转化float成功

我为什么要执着转化类型呢

因为我用decribe查看数据信息的时候,object会产生unique的结果,我想要的是最大值最小值标准差的结果。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Titanic数据分析 利⽤Pandas对泰坦尼克数据进⾏分析 1.导⼊数据 导⼊数据,对数据做个简单的统计 import pandas as pd import matplotlib.pyplot as plt # 导⼊数据 titanic = pd.read_csv(r"⾃⼰电脑上这个⽂件的路径\train.csv") # 快速预览 print(titanic.head()) print(titanic.info()) # 把所有数值类型的数据做⼀个简单的统计 print(titanic.describe()) #describe函数⽐info函数功能更强⼤,统计所有⾮空数据的条数,mean平均值,std标准差,min和max最⼩最⼤值 # 统计null值个数 print(titanic.isnull().sum()) 2. 处理空值 # 可以填充整个dataframe⾥⾯的空值 # titanic.fillna(0) #将空值都填充为0 # 单独选择⼀进⾏空值填充 # titanic.Age.fillna(0) # 年龄⽤0填充不合适,可以⽤中位数进⾏填充 # 年龄的中位数 print(titanic.Age.median()) #输出结果为28 # 按年龄中位数去填充,此时返回⼀个新的series print(titanic.Age.fillna(titanic.Age.median())) # 直接填充,并不返回新的series titanic.Age.fillna(titanic.Age.median(), inplace = True) # 再次查看Age的空值 print(titanic.isnull().sum()) #此时发现,age的空值为0了 3. 尝试从性别进⾏分析 # 做简单的汇总统计,value_counts这个函数会经常⽤到 print(titanic.Sex.value_counts()) #男性577,⼥性314 # ⽣还者中,男⼥的⼈数 survived = titanic[titanic.Survived==1].Sex.value_counts() print(survived) #男性109,⼥性233 # 未⽣还者中,男⼥的⼈数 dead = titanic[titanic.Survived==0].Sex.value_counts() print(dead) #男性468,⼥性81 3.1. 尝试绘图 先看⼀下画出的柱状图是什么样的 # 尝试⽤pandas⾃带绘图 df = pd.DataFrame([survived, dead],index = ['survived', 'dead']) # 由于汇总统计输出的数据类型是series,有两,所以可以⽤dataframe构建 df.plot.bar() plt.show() 绘图成功,但是不是我们想要的效果 我们想把⼥性的死亡和⽣还⼈数画⼀起,把男性的死亡和⽣还⼈数画⼀起,这时候我们可以把dataframe转置⼀下 df = df.T print(df) 转置成功,这时候再画⼀下 仍然不是我们想要的结果 尝试把直⽅图堆积在⼀起,直观⼀点 df.plot(kind = 'bar', stacked = True) plt.show() 效果如图: 由于男⼥⼈数不⼀样,没法直观看到男⼥⽣还⼈数的百分⽐ df['p_survived'] = df.survived / (df.survived + df.dead) df['p_dead'] = df.dead / (df.survived + df.dead) print(df) 此时⽣还和死亡的百分⽐就出来了,⼥性的死亡和⽣还的百 分⽐相加是100%。注意分母要⽤括号括起来! 下⾯绘制男⼥中⽣还者的⽐例情况的图 # 男⼥中⽣还者的⽐例情况 df['p_survived'] = df.survived / (df.survived + df.dead) df['p_dead'] = df.dead / (df.survived + df.dead) df[['p_survived','p_dead']].plot(kind='bar', stacked = True) plt.show() 通过上图可以看出,性别特征对是否⽣还的影响还是挺⼤的 4. 从年龄进⾏分析 # 简单统计 print(titanic.Age.value_counts()) 与性别类似,对年龄进⾏Dataframe,打印看⼀下 # 因为年龄只有⼀数据,不适合⽤柱状图,这⾥尝试⽤直⽅图画⼀下 # ⽣还者的年龄 survived = titanic[titanic.Survived==1].Age # 未⽣还者

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值