添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • index_col 默认值(index_col = None)——重新设置一列成为index值
  • index_col=False——重新设置一列成为index值
  • index_col=0——第一列为index值
  • df.head()

    3、数据的探索与描述

    df.shape # 表示有0-5100行,0-13列

    df.info()

    #describe()函数只能显示数值型的数据统计,所以在这里只显示了2列 df.describe()

    4、数据简单的处理

    (1)列入将表中属性中的不规范定义进行简单的处理,例如:’价格 ‘出现空格

    df.columns

    将数组里的下标赋值给col变量

    col = df.columns.values

    去空格,第一种:以下的方法只能每次去除一次空格,有点繁琐

    col[0].strip()

    去空格,第二种:使用for循环来进行处理,如下:

    df.columns = [x.strip() for x in col]

    df.columns.values

    5、重复数据的处理

    (1)duplicated():显示重复值;返回布尔值类型 (2)drop_duplicates():删除重复值

    df.duplicated()

    df.duplicated().sum()

    显示重复值的数据

    df[df.duplicated()]

    删除表中的重复值的数据

    df.drop_duplicates(inplace=True)

    df.duplicated().sum()

    df.shape

    我们发现重复的值已经被删除了,原来的数据是(5100,13)

    现在我们要在原来的数据上,去重新将索引更改为有序

    df.shape[0]

    df.shape[1]

    df.index #明显索引是无序的

    df.index = range(df.shape[0])

    df.index

    6、异常值的处理

    在这里我们对“价格”和“节省”中出现的异常值进行处理 (1)对于建模来说,通常会删除异常值 (2)对于业务来说,异常值可能会包含很多的价值 (3)认为超过3倍标准差的数据,就认为这个数据是异常的

    df.describe().T

    明显发现max出现一个异常值179500.0

    sta = (df[‘价格’] - df[‘价格’].mean())/df[‘价格’].std()

    df[sta.abs()>3]

    df[df.节省 > df.价格]

    发现异常值一共有4条

    pd.concat([df[df.节省 > df.价格], df[sta.abs() > 3]])

    del_index = pd.concat([df[df.节省 > df.价格], df[sta.abs() > 3]]).index

    df.drop(del_index, inplace=True)

    df.shape

    7、缺失值的处理

    (1)df.isnull() 查看缺失值 (2)df.notnull() 查看不是缺失值 (3)df.dropnd() 删除缺失值 (4)df.fillna() 填补缺失值

    df.isnull().sum()

    df[df.出发地.isnull()]

    df.loc[df.出发地.isnull(), ‘出发地’] = [str(x)[:2] for x in df.loc[df.出发地.isnull(),’路线名’]]

    df[df.出发地.isnull()]

    df.出发地.isnull().sum()

    df[df.目的地.isnull()]

    df.loc[df.目的地.isnull(), ‘目的地’] = str(df.loc[df.目的地.isnull(), ‘路线名’].values)[5:7]

    df[‘价格’].fillna(round(df[‘价格’].mean(), 0), inplace= True)

    df[‘节省’].fillna(round(df[‘节省’].mean(), 0), inplace = True)

    在python3中round()函数做个改动,而且让人很难接受,所以现在用python2和python3来求round(2.5)会有不同的结果。python2给出的结果更接近大家通常的认识,下面是python2和3对round()函数的处理:

    round(x)函数将一个浮点数x四舍五入为最近的1的倍数,如round(0.4)=0, round(0.6)=1.0; 如果x距离两个倍数值相等,如round(0.5)距离0和1.0相等,那么: python2把x四舍五入为远离0的最近倍数,如round(0.5)=1, round(-0.5)=-1; python3则会把x四舍五入为最近的偶数倍数,如round(0.5)=0, round(1.5)=2.0, round(2.5)=2.0

    df.isnull().sum()

    8、处理文本行数据

    如果想要在一系列文本提取信息,使用正则表达式

    df[‘酒店评分’] = df.酒店.str.extract(‘(\d.\d)分/5分’, expand=False) df[‘酒店等级’] = df.酒店.str.extract(‘ (.+ )’, expand=False) df[‘天数’] = df.路线名.str.extract(‘(\d+)天\d晚’, expand=False)

    df.head(2)

    【Me】https://github.com/Valuebai/

    1、出处:https://www.kesci.com/home/project/5cbd32248c90d7002c816fa0/code