pandas是很常用的数据分析,数据处理的包。anaconda已经有这个包了,纯净版python的可以自行pip安装。
删除重复值 drop_duplicates()
df=pd.DataFrame({'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']})
语法:drop_duplicates(subset,keep,inplace),其中参数 keep:{‘first’,‘last’,False},默认’first’
first:保留第一次出现的重复项,删除第二次及之后出现的重复项。
last:保留最后一次出现的重复项,删除之前出现的重复项。
"false":删除所有重复项。
查看有nan的行,和不含有nan的行
#1 查看含有nan的行 df[df.isna().any(axis=1)]
#2 查看不含有nan的行 df[~df.isna().any(axis=1)] #有一个符号 ~ 一定要注意这一点
示例:提取pandas dataframe中’商品名称‘列包含’手机’字符的所有数据:
#提取含有指定字符的行
df2=df[df['商品名称'].str.contains(pat='手机',regex=False)] #regex=True则pat是一个正则表达式,regex=False表示pat是一个字符串
删除pandas dataframe中’商品名称’列包含’手机’字符的所有数据:
#删除含有指定字符的行
df2=df.drop(df[df['商品名称'].str.contains(pat='手机',regex=False)].index,inplace=True) #regex=True则pat是一个正则表达式,regex=False表示pat是一个字符串
去掉某些具体值
数据集df中,对于属性appPlatform(最后一列),我们想删除掉取值为2的那些样本。如何做?非常简单。
df[(True-df['appPlatform'].isin([2]))]
当然,有时候我们需要去掉不止一个值,这个时候只需要在isin([])的列表中添加。更具体来说,例如,对于appID这个属性,我们想去掉appID=278和appID=382的样本。
df[(True-df['appID'].isin([278,382]))]
另外,我们有时候并不只是考虑某一列,还需要考虑另外若干列的情况。例如,我们需要过滤掉appPlatform=2而且appID=278和appID=382的样本呢?非常简单。
df[(True-df['appID'].isin([278,382]))&(True-df['appPlatform'].isin([2]))]
很详细的介绍链接:https://www.jb51.net/article/236118.htm#_lab2_0_4
官网详细解释链接:https://pandas.pydata.org/docs/reference/api/pandas.Series.str.contains.html?highlight=contains#pandas.Series.str.contains
小的示例
import pandas as pd
df = {'地址':['北京','上海','长沙','北京省会','广州市区'],'table':['user','student','course','sc','book']}
df = pd.DataFrame(df)
print(df)
print('================')
citys = ['北京', '天津', '上海']
address = '|'.join(citys)
df_new = df[df['地址'].str.contains(address)] #包含对应关键字
print(df_new)