数据分析实践

动手学数据分析

初识数据

  • 文件读取时使用绝对路径遇到报错,后解决如
df = pd.read_csv(r'C:\Users\XY\Desktop\动手学数据分析\handsondataanalysismaster\第一单元项目集合\train.csv')
df.head(10)
df = pd.read_csv('/Users/chenandong/Documents/datawhale数据分析每个人题目设计/招募阶段/第一单元项目集合/train.csv')
df.head(3)
  1. 什么是逐块读取?为什么要逐块读取呢? 它的本质就是将文本分成若干块,每次处理chunksize(参数)行的数据,最终返回一个TextParser对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。
chunker = pd.read_csv('train.csv',chunksize=1000)
  1. 将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
df.head()

是否可以用replace()或translate()?
3. 查看数据的基本信息所用函数(其他博主总结)

df.info():          # 打印摘要
df.describe():      # 描述性统计信息
df.values:          # 数据 <ndarray>
df.to_numpy()       # 数据 <ndarray> (推荐)
df.shape:           # 形状 (行数, 列数)
df.columns:         # 列标签 <Index>
df.columns.values:  # 列标签 <ndarray>
df.index:           # 行标签 <Index>
df.index.values:    # 行标签 <ndarray>
df.head(n):         # 前n行
df.tail(n):         # 尾n行
pd.options.display.max_columns=n: # 最多显示n列
pd.options.display.max_rows=n:    # 最多显示n行
df.memory_usage():                # 占用内存(字节B)
  1. 判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull().head()
  1. 查看"Cabin"这列的所有值 [有多种方法]
df['Cabin'].head(3)
#或者
df.Cabin.head(3)

数据清洗及特征处理

缺省值观察
  1. 查看每个特征缺失值个数
# .isnull()方法返回True/False布尔值,指示Pandas对象中的元素是否为空值。使用.isnull()方法,然后从其返回的布尔值矩阵中调用.sumn()方法,即可返回DataFrame每列有多少个缺失值的计数
df.isnull().sum() #返回列中缺失值的数量
对缺省值处理
  1. (1)处理缺失值一般有几种思路

    (2) 请尝试对Age列的数据的缺失值进行处理

    (3) 请尝试使用不同的方法直接对整张表的缺失值进行处理

#处理却省值可使用的函数有--->dropna函数与fillna函数
# .fillna()方法从Pandas对象中查找每个缺少的值,并用传入的数值进行填充
filled_df = df_obj.fillna(0)
filled_df
df_obj 
# object_name.fillna(dict)
# 可以将字典传递给.fillna()方法。 然后,该方法将填充每个列(由字典键指定)中的缺失值(在相应的字典值中指定)。
filled_df = df_obj.fillna({0 : 0.1 , 5 : 1.25})
filled_df
#表示第零列缺失值填充为0.1,第五列填充为1.25

#删除缺失值
object_name.dropna()
#要从包含缺失值的DataFrame中标识并删除缺失值所在的行,从DataFrame对象调用.dropna()方法即可。注意:如果要删除包含缺失值的列,传递axis = 1参数即可按列而不是按行进行删除。

#删除包含缺失值的行
 # object_name.dropna(how='all')
# 要删除DataFrame中只包含缺失值的空行,从DataFrame对象调用.dropna()方法,然后传入how='all'参数即可。
df_no_nan = df_obj.dropna(how = 'all')
df_no_nan
对重复值观察处理
#查看数据中的重复值
df[df.duplicated()]
#对重复值进行处理
df = df.drop_duplicates()
df.head()
特征观察与处理

对特征进行观察和处理,可以把特征大概分为两类:数值型特征,文本型特征。数值特征一般可以直接用于模型的训练,但有时候为了模型的稳定性及鲁棒性会对连续变量进行离散化。文本型特征往往需要转换成数值型特征擦能用于建模分析。

  1. 对年龄进行分箱(离散化)处理
    pd.cut()方法进行分箱,参数bins指定多个区间,bins: int(箱数), sequence of scalars(箱边), or IntervalIndex。可以使用labels参数为每个区间指定 一个label ,labels: array or False, default None
    【参考】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html
#将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])
df.head()
#将连续变量Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])
df.head(3)
#将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示
df['AgeBand'] = pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels = [1,2,3,4,5])
df.head()
  1. 对文本变量进行变换
#查看类别文本变量名及种类

#方法一: value_counts
df['Sex'].value_counts()

#方法二: unique
df['Sex'].unique()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值