前言
作为纯小白,最近硬着头皮帮朋友做了个Excel数据整理 查看 输出的程序
完全闭门造车,遇到问题和报错就一顿搜索,总算搞定了。感谢CSDN,感谢各位大佬的文章。
集中整理一下,作为自己的记忆备份,也希望能帮助到有需要的朋友。
注:并非正规军,都是兵来将挡水来土掩的招数,大佬勿喷……
关于Pandas的常用数据整理语句(无序 用到哪个写哪个)
清理有空值的行
thresh为阈值,需要正确理解
如下句代码的含义为:删除‘除了空值以外,有内容的元素数量小于3的行’
df = df.dropna(axis=0, thresh=3)
读取需要的行生成list
title = numpy.array(df.iloc[0])
title = title.tolist()
返回DataFrame总行数 总列数
df_colume = df.shape[1] # 返回总列数
df_index = df.shape[0] # 返回总行数
查找所有非数字元素返回false
df1 = df.astype(str) # 将df转为字符格式,以便使用isdigit命令查找小数
df2 = df1.select_dtypes(include=[object]).stack().str.isdigit().unstack() # 查找所有非数字元素返回false,包括小数
DataFrame所有列求和
df.loc['Col_sum'] = df.apply(lambda x: x.sum()) # 求和以后在最后添加一行,行名称为Col_sum
DataFrame里查找所有特殊字符
mask = df.select_dtypes(include=[object]).stack().str.contains('XX').unstack() # 查看所有包含XX的元素 返回true或false
DataFrame里填充空值
mask = mask.fillna('原文为空值') # 将NaN填充为‘原文为空值’
DataFrame里替换列名称
全部替换
df.columns = title # title为自定义的list列表,与原df的总列数相同
DataFrame里选择某列中包含特殊值的行生成新的df
chosen_company = df[df.公司名称.str.contains('腾讯')]
其它相关
文件名里面提取字符
例如桌面有Excel文件 Desktop/XX公司-第一季度订单.xlsx
可以在读取文件名后采用找到特殊字符分割的方法,提取需要的信息。
company_name = i[i.rfind('/') + 1:i.find('-')]
order_name = i[i.find('-') + 1:i.rfind('.')]
生成一个从0开始,至x截止,步长为1的list
list_index = list(range(0, x))