增加encoding='gbk'
采用info()函数打印DataFrame的完整摘要,并排除null-counts
#删除重复数据
data.drop_duplocates(keep='first',inplace=True)
keep='first'保留第一行的数据
#删除缺失值
data.dropna(axis=0,how='any',inplace=True)
inplace=,True是不创建新的对象,直接原地修改,False是创建新的对象
axis=,0删除行,1删除列
how='',all整条记录是na才能删除,any是有一个na就删除掉
#删除列
data.drop(columns=[''],inplace=True,axis=1);
重新运行会报错,需要重新运行源文件
#更新索引
data=data.reset_index(drop=True,inplace=True)
drop=True:把原来的索引index列删除,重置index
#异常值处理
data.describe()总结数据集分布的集中趋势,分散和形状,不包括NaN值
三种:左偏,对称,右偏
销售金额带有元和万元,并且是以“,”表示“."
思路:取出销售金额列,对每一个数据进行清洗
编写自定义过滤函数:删除逗号,转成float,如果是万元则*10000,否则,删除元
def data_deal(number):
if number.find('万元')!=-1:
number_new=float(number[:number.find('万元')].replace( ',' , '' ))*10000
pass
else:
number_new=float(number.replace('元','' ).replace(',' , ''))
pass
return number_new
data['销售金额'].map(data_deal)
tips:pass是个占位语句,不做任何事情(没想好函数放什么,可以放pass占位)
data['时间']=pd.to_datetime(data['有时间列的名']) #将格式转化为datetime
data['月份']=data['有时间列的名'].apply(lambda x:x.month) #取出月份
19990203
df[]=pd.to_datetime(df[' '],format='%Y%m%d')
#format参数:按照指定的格式去匹配要转换的数据列
#%Y:四位的年份1999,%m:两位月份02,%d:两位月份31,%y:两位年份99,%h:两位小时09,%M:两位分钟15,%s:两位秒
分组:data.groupby(['xxx','xxxx']).size().unstack()
unstack()可以形成一个清晰的列表
降序排序:data.sort_values(by='',ascending=False)
取出数据:data['']=data[''].str.strip() #取出首位空格
字符串数量统计:value_counts
自己加列头:df=pd.read_table('xxx.txt',names=columns,sep='\s+')
#sep='\s+':匹配任意个空格
tips:如果出现报错key:xxx,代表没有xxx