pandas数据分析与处理

1.插补用户用电量数据缺失值。

用户用电量数据呈现一定的周期性关系,missing_data.csv表中存放了用户A、用户B和用户C的用电量数据,其中存在缺失值,需要进行缺失值插补才能进行下一步分析。

(1)读取missing_data.csv表中的数据。

(2)查询缺失值所在位置。

(3)使用SciPy库中interpolate模块中的lagrange对数据进行拉格朗日插值。

(4)查看数据中是否存在缺失值,若不存在则说明插值成功。

源程序

import pandas as pd
import numpy as np 
arr=np.array([0,1,2])
missing_data=pd.read_csv('C:/Users/Administrator/Desktop/上机3/missing_data.csv',names=arr)
print('missing_data每个特征缺失的数目为:\n',missing_data.notnull())#查询缺失值所在位置
from scipy.interpolate import lagrange#拉格朗日插值
for i in range(0,3):
    la=lagrange(missing_data.loc[:,i].dropna().index,missing_data.loc[:,i].dropna().values)#训练lagrange模型
    list_d=list(set(np.arange(0,21)).difference(set(missing_data.loc[:,i].dropna().index)))#记录当前列缺失值所在行
    missing_data.loc[list_d,i]=la(list_d)#缺失值带入
    print('第%d列缺失值的个数为:%d' %(i,missing_data.loc[:,i].isnull().sum()))
print('missing_data拉格朗日插值后每个特征缺失的数目为:','\n',missing_data.notnull())#查询缺失值所在位置

结果截屏

2. 合并线损、用电量趋势与线路告警数据。

线路线损数据、线路用电量趋势下降数据和线路警告数据是识别用户窃漏电与否的3个重要特征,需要对由线路线路编号(ID)和时间(data)两个键值构成的主键进行合并。

(1)读取ele_loss.csv和alarm.csv表。

(2)查看两个表的形状。

(3)以ID和date两个键值作为主键进行内连接。

(4)查看合并后的数据。

  源程序

import pandas as pd
ele_loss=pd.read_csv('C:/Users/Administrator/Desktop/上机3/ele_loss.csv',encoding='gbk')
alarm=pd.read_csv('C:/Users/Administrator/Desktop/上机3/alarm.csv',encoding='gbk')
print('ele_loss的形状为:',ele_loss.shape)
print('alarm的形状为:',alarm.shape)
merge=pd.merge(ele_loss,alarm,how='inner',left_on=['ID','date'],right_on=['ID','date'])
print('merge的数据为:',merge)

 运行截图

3.对菜品数据去重及异常值处理。

菜品数据存在重复的现象,所以需要对菜品销售数据分别进行记录去重和特征去重,并将异常值进行处理。

  (1)读取detail.csv表。

  (2)对订单详情表的样本去重与特征去重。

  (3)订单详情表异常值检测与处理。

  源程序

import pandas as pd
detail=pd.read_csv('C:/Users/Administrator/Desktop/上机3/detail.csv',encoding='gbk')
print('进行去重操作前菜品数据的的形状为:',detail.shape)
#样本去重
detail.drop_duplicates(inplace = True)
#特征去重
def FeatureEquals(df):
    dfEquals=pd.DataFrame([],columns=df.columns,index=df.columns)
    for i in df.columns:
        for j in df.columns:
            dfEquals.loc[i,j]=df.loc[:,i].equals(df.loc[:,j])
    return dfEquals
detEquals=FeatureEquals(detail)#应用上述函数
lenDet = detEquals.shape[0]
dupCol=[]
for k in range(lenDet):
    for l in range(k+1,lenDet):
        if detEquals.iloc[k,1] & \
        (detEquals.columns[1] not in dupCol):
            detail.drop(dupCol,axis=1,inplace=True)
print('进行去重操作后订单详情表的形状为:',detail.shape)

运行截图

4.对菜品数据标准化,对部分数据进行转换。

(1)对订单详情表中的数值型数据做标准差标准化。

(2)对菜品dishes_name特征进行哑变量处理。

(3)对菜品售价使用等频法离散化。

  源程序

#自定义标准差标准化函数
def StandardScaler(data):
    data=(data-data.mean())/data.std()
    return data
#对菜品订单表售价和销售量做标准化
data4=StandardScaler(detail['counts'])
data5=StandardScaler(detail['amounts'])
data6=pd.concat([data4,data5],axis=1)
print('标准差标准化之后销量和销量数据为:','\n',data6.head(10))

#哑变量处理
detail=pd.read_csv('C:/Users/Administrator/Desktop/上机3/detail.csv',encoding='gbk')
data=detail.loc[0:5,'dishes_name']
print('哑变量处理前的数据为:\n',data)
print('哑变量处理后的数据为:\n',pd.get_dummies(data))

#等频法散化
def SaneRateCut(data,k):
    w=data.quantile(np.arange(0,1+1.0/k,1.0/k))
    data=pd.cut(data,w)
    return data
result=SaneRateCut(detail['amounts'],5).value_counts()
print('菜品数据等频法离散化后各个类别数目分布情况为:','\n',result)

运行截图

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas是一个强大的用于数据处理和分析的Python库,它提供了灵活的数据结构和功能丰富的工具,可以帮助我们轻松地进行数据处理、清洗、转换和分析。 Pandas库提供了两种主要的数据结构,即序列(Series)和数据框(DataFrame)。序列是一种一维的数据结构,可以存储不同类型的数据,并且每个数据都有一个索引。数据框是二维的表格型数据结构,可以将多个序列整合在一个表格中,每一列可以有不同的数据类型。 通过使用Pandas,我们可以方便地从各种数据源(包括CSV、Excel、数据库等)中读取数据,然后对数据进行处理和分析。Pandas提供了各种功能,如数据清洗(处理缺失值、重复值、异常值等),数据转换(合并、拆分、排序等),以及数据分析(统计分析、数据透视表、时间序列分析等)。 对于数据处理和分析,Pandas提供了丰富的函数和方法,例如可以通过使用筛选条件、索引、切片等操作来选取和修改数据,还可以进行数据的聚合、分组和操作。此外,Pandas还可以与其他Python库(如NumPy、Matplotlib)相结合使用,进一步拓展数据处理和分析的功能。 Pandas数据处理与分析的相关资源可以通过PDF文档和各类网盘进行下载和存储。通过阅读Pandas的官方文档,可以了解到Pandas提供的各种功能、方法和使用技巧。同时,许多网盘上也收集了大量的Pandas相关资料和教程,可以为我们学习和使用Pandas提供便利。 总之,Pandas是一个功能强大的Python库,对于数据处理和分析非常有用。通过阅读Pandas的相关文档和教程,以及利用网络资源中的PDF和网盘存储,我们可以更好地掌握Pandas的使用技巧,并在实际的数据处理和分析工作中发挥其作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值