Python数据分析,办公自动化,数据预处理该怎做?
数据分析时,首先应对数据进行清洗,这里将数据清洗分为重复值处理、缺失值处理、异常值处理三个部分,重复值处理可删除重复的字段,缺失值处理可以用线性插值、填充为0或用均值填充等,异常值处理用描述性分析、散点图、箱形图、直方图查找异常并处理。
本文使用超市商品交易数据,详细介绍重复值处理、缺失值处理、异常值处理的方法,并实际运用数据进行演示,代码操作如下所示。 #导入数据 import pandas as pd df=pd.read_csv(r"C:Users尚天强Desktop超市商品交易.csv",engine="python",encoding="utf-8-sig") df.head()
重复值处理
首先对重复值计数。 df.duplicated().value_counts()
用drop_duplicates的方法对某几列下面的重复行删除,subset:以某列作为基准列,判断是否重复;keep: 保留哪个字段,fisrt参数保留首次出现的数值;inplace: 是否替换当前数据,True选择替换当前数据。 df.drop_duplicates(subset=["商品码"],keep="first",inplace=True) df.duplicated().value_counts()
缺失值处理
通过isnull函数看一下是否有空值,结果是有空值的地方显示为True,没有的显示为False。 df.head(11).isnull()
使用info查看各个字段的属性,标记的部分为缺失的部分。 df.info()
通过isnull().any()查看每一列是否有空值,True返回缺失值。 df.isnull().any()
用df.isnull().values==True来定位哪几行是有空值的。 df[df.isnull().values==True]
how="any"只要有一个缺失值就删除,axis=0,删除的是行,默认删除的是行,inplace=True替换原始数据。 df.dropna(how="any", axis=0,inplace=True) df.info()
fillna(0)用0对缺失值进行填充。 df1=df[df.isnull().values==True] df1.fillna(0)
limit用来限定填充的数量。 df1.fillna(0,limit=3)
{ }对不同的列填充不同的值,其中键作为列,值作为缺失值填充的值。 df1.fillna({"售价":0 ,"成交价":0 ,"进价": "#N/A"})
method方法使用ffill,表示用前一个值作为填充的值。 df1.fillna(method="ffill")
median方法使用中位数的值进行填充。 df1.fillna(df1.median())
interpolate表示线性插值。 df[df.isnull().values==True].interpolate() #线性插值
异常值处理
describe( )对统计字段进行描述性分析,从平均值、标准差,看数据的波动情况,最大值查看数据的极值。 df[["售价","进价"]].describe()
做出散点图,查看数据中异常的点,图中标记的点就是异常的点。 from matplotlib import pyplot as plt plt.rcParams["font.sans-serif"]="SimHei" #解决中文乱码问题 plt.scatter(df["售价"], df["进价"]) plt.title("散点图",loc = "center") plt.show()
做出箱线图,反映原始数据分布的特征。 plt.subplot(1,2,1) plt.boxplot(df["数量"],labels = ["数量"]) plt.subplot(1,2,2) plt.boxplot(df["售价金额"],labels = ["售价金额"]) plt.show()
做售价金额的折线图,售价金额呈波动趋势。 plt.plot(df["售价金额"])
用箱形图的办法,超过了上四分位1.5倍四分位距或下四分位1.5倍距离都算异常值,用中位数填充。 import numpy as np a = df["售价金额"].quantile(0.75) b = df["售价金额"].quantile(0.25) c = df["售价金额"] c[(c>=(a-b)*1.5+a)|(c<=b-(a-b)*1.5)]=np.nan c.fillna(c.median(),inplace=True) c.describe()
用标准差和均值,定义超过4倍就算异常值,同样用中位数填充。 a = df["售价金额"].mean()+df["售价金额"].std()*4 b = df["售价金额"].mean()-df["售价金额"].std()*4 c = df["售价金额"] c[(c>=a)|(c<=b)]=np.nan c.fillna(c.median(),inplace=True) c.describe()
正态性检验,发现售价金额呈右偏分布,表明售价金额并不是正态分布。 import seaborn as sns sns.distplot(df["售价金额"]) #解决负号无法正常显示问题 plt.rcParams["axes.unicode_minus"]= False plt.show()
7月新能源车销量盘点!理想ONE销量超8500台,Model3仅六千多文磊磊近日乘联会公布了2021年7月份新能源车销量数据及排名,接下来我们深入榜单,看看七月。我们首先恭喜理想ONE,8589台的交付数量已足够说明它在主流市场的被认可度,怎么说呢,
iPhone13新配色曝光,双金加持真亮眼不知道还有多少人记得当年网友把诺基亚称之为科技以换壳为本,把苹果称之为科技以新增配色为本。因为诺基亚当年最擅长的就是给手机换个壳,换个型号再发布一次。而苹果每年的新iPhone都会
防不甚防,亚马逊卖家仍有办法联系追捕差评客户很长一段时间,亚马逊深陷虚假评论困扰。因为该平台市场上的大部分商品并非来自亚马逊官方,其销售的产品多数都是来自第三方卖家。而亚马逊也因为第三方卖家的违规操作,使用虚假的消费者评论来
华为的二公主,恨铁不成钢大家好,我是维小维。说真的,2021年真的见证历史。我们既见证了年初还在播放小舍得深感需痛追鸡娃,年中就发现不用鸡了,教培机构差不多都死光光又见证了年初才在感慨吴亦凡真的是顶流啊,
苹果推送iOS15Beta6新增游戏手柄控制流畅度提高8月18日凌晨苹果向开发者推送了iOS15Beta6版本,距离上一次更新仅仅过去了一周时间,iBeta尝鲜派给我们总结了更新内容,尾巴们,你们冲了吗?(转载尝鲜派)(1)更多内容的
蔚来的牛皮吹破了车评观察车评社第448期前言本来这几天大家热议的话题是缺芯,奈何年轻企业家驾驶蔚来致死事故影响范围太大,蔚来汽车被送上了舆论的风口浪尖。今日,莆田高速交警微发布微信公众号8月18日
iQOO8Pro测评水桶之上iQOO自2019年3月正式诞生以来,就一直保持了平均每半年一代旗舰的更新频率。因此这个品牌虽然只有两岁半,但其数字旗舰已经来到了第六代,也就是今天发布的iQOO8系列。要做到如此
狗狗币可以购买特斯拉狗狗币最近逐渐成为各种事物的支付方式。诸如接受狗狗币门票付款的狗狗币节之类。马克库班今年也宣布了其NBA篮球队达拉斯小牛队将开始接受狗狗币付款。但社区一直在等待的是能够通过Doge
开学笔记本怎么选?天选2新款预售,比拯救者Y9000P更值得抢近两年的笔记本市场竞争不可谓不激烈,各大厂商不仅在性能释放等方面持续发力,在用户越来越关心的屏幕素质上也是不逞多让,比如华硕今年年初推出的热门游戏本天选2系列近期就在屏幕上大做文章
2013年发布的iPhone5s,现在还能用么?在座的机友们,对手机钉子户这个概念肯定不陌生,最具代表性的莫过于小米6钉子户,让雷总都头疼不已。而苹果手机中,钉子户机型就更多了iPhone5s66s,直到现在依然坚挺。除了老机型
高瓴二季度新买入了滴滴,减持最多的是拼多多近五个季度以来高瓴在美股的资产管理规模首次低于100亿美元。文段旭编辑管艺雯8月16日,高瓴公布的二季度美股持仓情况显示,其新进买入了滴滴Boss直聘,主要减持了拼多多,增持了蔚来