首页 👨‍💻计算机,📚生活杂谈,🐍Python

对比

1.删除指定列、重命名列

场景:

多数情况并不是底表的所有特征(列)都对分析有用,这个时候就只需要抽取部分列,对于不用的那些列,可以删除。

重命名列可以避免有些列的命名过于冗长(比如Case When 语句),且有时候会根据不同的业务指标需求来命名。

In [2]:

#删除列:
df.drop(col_names, axis=1, inplace=True)
#重命名列:
df.rename(index={'row1':'A'},columns ={'col1':'B'})
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-e0120bce2ebb> in <module>
      1 #删除列Python版:
----> 2 df.drop(col_names, axis=1, inplace=True)
      3 #重命名列Python版:
      4 df.rename(index={'row1':'A'},columns ={'col1':'B'})

NameError: name 'df' is not defined

2.重复值、缺失值处理

场景:比如某网站今天来了1000个人访问,但一个人一天中可以访问多次,那数据库中会记录用户访问的多条记录,而这时候如果想要找到今天访问这个网站的1000个人的ID并根据此做用户调研,需要去掉重复值给业务方去回访。

缺失值:NULL做运算逻辑时,返回的结果还是NULL,这可能就会出现一些脚本运行正确,但结果不对的BUG,此时需要将NULL值填充为指定值。

In [ ]:

# 重复值处理
df.drop_duplicates()
# 缺失值处理
df.fillna(value = 0)

df1.combine_first(df2)

3.替换字符串空格、清洗*%@等垃圾字符、字符串拼接、分隔等字符串处理

场景:理解用户行为的重要一项是去假设用户的心理,这会用到用户的反馈意见或一些用研的文本数据,这些文本数据一般会以字符串的形式存储在数据库中,但用户反馈的这些文本一般都会很乱,所以需要从这些脏乱的字符串中提取有用信息,就会需要用到文字符串处理函数。

In [4]:

## 1、空格处理
df[col_name] = df[col_name].str.lstrip() 

## 2、*%d等垃圾符处理
df[col_name].replace(' &#.*', '', regex=True, inplace=True)

## 3、字符串分割
df[col_name].str.split('分割符')

## 4、字符串拼接
df[col_name].str.cat()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-eff96fdaf4d3> in <module>
      1 ## 1、空格处理
----> 2 df[col_name] = df[col_name].str.lstrip()
      3 
      4 ## 2、*%d等垃圾符处理
      5 df[col_name].replace(' &#.*', '', regex=True, inplace=True)

NameError: name 'df' is not defined

4. 合并处理

场景:有时候你需要的特征存储在不同的表里,为便于清洗理解和操作,需要按照某些字段对这些表的数据进行合并组合成一张新的表,这样就会用到连接等方法。

In [ ]:

左右合并
#1.
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)
# 2.
pd.concat([df1,df2])

上下合并
df1.append(df2, ignore_index=True, sort=False)

5.窗口函数的分组排序

场景:假如现在你是某宝的分析师,要分析今年不同店的不同品类销售量情况,需要找到那些销量较好的品类,并在第二年中加大曝光,这个时候你就需要将不同店里不同品类进行分组,并且按销量进行排序,以便查找到每家店销售较好的品类。

Image Name

In [ ]:

df['Rank'] = df.groupby(by=['Sale_store'])['Sale_Num'].transform(lambda x: x.rank(ascending=False))

Image Name

时间序列处理

场景:大量的时间序列数据需要转换成datetime类型来处理

In [ ]:

df['date'] = pd.to_datetime(df['date'].astype(str))


文章评论

目录