首页 > 编程语言 >Python数据分析,办公自动化,数据预处理

Python数据分析,办公自动化,数据预处理

时间:2022-10-14 16:07:06浏览次数:39  
标签:办公自动化 isnull Python 金额 df plt True 预处理 售价



数据分析时,首先应对数据进行清洗,这里将数据清洗分为重复值处理、缺失值处理、异常值处理三个部分,重复值处理可删除重复的字段,缺失值处理可以用线性插值、填充为0或用均值填充等,异常值处理用描述性分析、散点图、箱形图、直方图查找异常并处理。

本文使用超市商品交易数据,详细介绍重复值处理、缺失值处理、异常值处理的方法,并实际运用数据进行演示,代码操作如下所示。


数据获取

公众号后台回复

超市商品交易

获取本案例所使用的数据


#导入数据import pandas asdf=pd.read_csv(r"C:\Users\尚天强\Desktop\超市商品交易.csv",engine="python",encoding="utf-8-sig")df.head()

Python数据分析,办公自动化,数据预处理_数据

重复值处理

首先对重复值计数。


df.duplicated().value_counts()

Python数据分析,办公自动化,数据预处理_数据_02

用drop_duplicates的方法对某几列下面的重复行删除,subset:以某列作为基准列,判断是否重复;keep: 保留哪个字段,fisrt参数保留首次出现的数值;inplace: 是否替换当前数据,True选择替换当前数据。



df.drop_duplicates(subset=["商品码"],keep='first',inplace=True)df.duplicated().value_counts()

Python数据分析,办公自动化,数据预处理_字段_03

缺失值处理


通过isnull函数看一下是否有空值,结果是有空值的地方显示为True,没有的显示为False。


df.head(11).isnull()

Python数据分析,办公自动化,数据预处理_缺失值_04

使用info查看各个字段的属性,标记的部分为缺失的部分。


df.info()

Python数据分析,办公自动化,数据预处理_数据_05

通过isnull().any()查看每一列是否有空值,True返回缺失值。


df.isnull().any()

Python数据分析,办公自动化,数据预处理_字段_06

用df.isnull().values==True来定位哪几行是有空值的。


df[df.isnull().values==True]

Python数据分析,办公自动化,数据预处理_缺失值_07

​how='any'只要有一个缺失值就删除,axis=0,删除的是行,默认删除的是行,inplace=True替换原始数据。



df.dropna(how='any', axis=0,inplace=True)df.info()

Python数据分析,办公自动化,数据预处理_缺失值_08

fillna(0)用0对缺失值进行填充。



df1=df[df.isnull().values==True]df1.fillna(0)

Python数据分析,办公自动化,数据预处理_字段_09

limit用来限定填充的数量。


df1.fillna(0,limit=3)

Python数据分析,办公自动化,数据预处理_缺失值_10

{ }对不同的列填充不同的值,其中键作为列,值作为缺失值填充的值。


df1.fillna({"售价":0 ,"成交价":0 ,"进价": "#N/A"})

Python数据分析,办公自动化,数据预处理_缺失值_11

method方法使用ffill,表示用前一个值作为填充的值。


df1.fillna(method="ffill")

Python数据分析,办公自动化,数据预处理_字段_12

median方法使用中位数的值进行填充。


df1.fillna(df1.median())


Python数据分析,办公自动化,数据预处理_字段_13

interpolate表示线性插值。


df[df.isnull().values==True].interpolate() #线性插值

Python数据分析,办公自动化,数据预处理_字段_14

异常值处理


describe( )对统计字段进行描述性分析,从平均值、标准差,看数据的波动情况,最大值查看数据的极值。


df[['售价','进价']].describe()

Python数据分析,办公自动化,数据预处理_字段_15

做出散点图,查看数据中异常的点,图中标记的点就是异常的点。



from matplotlib import pyplot asplt.rcParams["font.sans-serif"]='SimHei' #解决中文乱码问题
plt.scatter(df["售价"], df["进价"])plt.title("散点图",loc = "center")plt.show()

Python数据分析,办公自动化,数据预处理_字段_16

做出箱线图,反映原始数据分布的特征。




plt.subplot(1,2,1)plt.boxplot(df["数量"],labels = ["数量"])
plt.subplot(1,2,2)plt.boxplot(df["售价金额"],labels = ["售价金额"])plt.show()

Python数据分析,办公自动化,数据预处理_数据_17

做售价金额的折线图,售价金额呈波动趋势。


plt.plot(df["售价金额"])

Python数据分析,办公自动化,数据预处理_数据_18

用箱形图的办法,超过了上四分位1.5倍四分位距或下四分位1.5倍距离都算异常值,用中位数填充。



importa = 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.nanc.fillna(c.median(),inplace=True)c.describe()

Python数据分析,办公自动化,数据预处理_数据_19

用标准差和均值,定义超过4倍就算异常值,同样用中位数填充。



a = df["售价金额"].mean()+df["售价金额"].std()*4b = df["售价金额"].mean()-df["售价金额"].std()*4c = df["售价金额"]c[(c>=a)|(c<=b)]=np.nanc.fillna(c.median(),inplace=True)c.describe()

Python数据分析,办公自动化,数据预处理_数据_20

正态性检验,发现售价金额呈右偏分布,表明售价金额并不是正态分布。



import seaborn assns.distplot(df['售价金额'])#解决负号无法正常显示问题
plt.rcParams["axes.unicode_minus"]= Falseplt.show()

Python数据分析,办公自动化,数据预处理_缺失值_21


标签:办公自动化,isnull,Python,金额,df,plt,True,预处理,售价
From: https://blog.51cto.com/u_15828536/5757087

相关文章

  • Python实战—基于KNN算法尾鸢花数据集分类
    KNN模型理论K最近邻分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中......
  • 使用Python同时读取和写入同一个文件
    前言在平时想要使用python修改文件部分内容的时候,常用的做法是使用open函数(默认模式为read)打开一个文件,然后关闭文件,然后再使用write模式去写入更新的内容,最后关闭。这......
  • Python实战—自行车租赁数据分析
    本节选取自行车的租赁数据,利用numpy、pandas、matplotlib三个库,数据清洗后,做数据分析,研究时间段与自行车租赁的关系。数据来源  本节以自行车的租赁数据为例,数据来源于网......
  • python实现批量下载配图王的美女图片
    importrequestsimportrefrombs4importBeautifulSoupimportrandom#生成随机数#foriinrange(5):#print(random.randrange(100000000))headers={......
  • 【python】准点跑路人必备小程序~ 不信你用不到
    前言嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~有时候下班~忙着跑路,忘记关电脑,逮到了会被老板扣工资!!怎么办?python带你制做一个小程序,到点自动关机~再......
  • Python实战—单词量评估
    今天,2019年上半年的四六级成绩出来了你过了吗?点击链接进行成绩查询​​http://cet.neea.edu.cn/cet/​​对于四六级的成绩总是几家欢乐几家愁如果这次没过下次一定要加油鸭!......
  • python pip下载包升级pip install --upgrade
    解决:如果使用pip下载命令, 下载失败 提示  根据提示:输入python-mpipinstall--upgradepip 升级本本,但是执行pipinstall--upgradepip还是报这个错误......
  • linux 安装python
    wgethttps://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgztarvxzfPython-2.7.18.tgzcdPython-2.7.18yuminstallgccg++make./configuremake&&......
  • Python 中isinstance的用法
    isinstance()函数用来判断一个对象是否是一个已知的类型.isinstance(object,classinfo)类似type().isinstance()与type()区别:type()不会认为子类是一种父类类型,不......
  • Python中用With open as 实现对文件的操作
    withopenasf在Python中用来读写文件(夹)。基本写法如下:withopen(文件名,模式)asf:f.write(内容)#写操作例:withopen('这个文章.txt,'w')asf:f.write('你好')with......