学python处理数据_python学习 基于数据的简单处理

import pandas as pd

df = pd.read_excel('E://data//朝阳医院2018年销售数据.xlsx')

df.head() #打印前五行

df.shape #有多少行,多少列

df.dtypes #查看每列的数据类型

colNameDict = {'购药时间':'销售时间'}

#列名重命名

df.rename(columns = colNameDict,inplace=True) #将购药时间改为销售时间 inplace=true表示不创建新的对象直接对原有的数据进行更改,false表示创建新的数据对象

df.head()

#缺失值的处理

print('删除缺失值前的大小',df.shape)

df=df.dropna(subset=['销售时间','社保卡号'],how='any') #删除列(销售时间,社保卡号)中为空的行,其中how='any'意思为给定列中任何一个有空值就删除行

print('删除缺失值后的大小',df.shape)

#数据类型的转换

df['销售数量']=df['销售数量'].astype('float')

df['应收金额']=df['应收金额'].astype('float')

df['社保卡号']=df['社保卡号'].astype('ocject')

##修改日期

def splitsaletime(timeColser):

timelist=[]

for value in timeColser: #例如2018-01-01 星期五 ,分割后为:2018-01-01

dateStr = value.split(' ')[0]

timelist.append(dateStr)

timeSer= pd.Series(timelist) #将列表转行为一维数据series类型

return timeSer

##输入:timecolser--销售时间这一列,是个series数据类型

##输出:分割后的时间,返回也是这个数据类型

timeSer= df.loc[:,'销售时间'] #获取销售时间这一列

dateSer = splitsaletime(timeSer) #对字符串进行分割,获取销售日期

df.loc[:,'销售时间']=dateSer #修改销售时间这一列的值

df.head()

#字符串转换日期

df.loc[:,'销售时间']= pd.to_datetime(df.loc[:,'销售时间'],format='%Y-%m-%d',errors='coerce')

df.dtypes

df=df.dropna(subset=['销售时间','社保卡号'],how='any')

##数据排序

#### 使用pd.sort.values方法进行排序,by表示按照那一列进行排序,ascending=true时表示升序排列,false表示降序排列

print('排序前的数据')

df.head()

df=df.sort_values(by='销售时间',ascending=True)

print('排序后的数据')

df.head()

##排序后的行号乱了,,需要进行重新的排序

df= df.reset_index(drop=True)

df.head()

##异常值的处理,,首先我用describe()方法查看数据框中所有数据每列的描述统计信息、

df.dedscribe() #从结果可以看出销售数量有负值出现,,可能是记录错误,删除

#删除通过条件判断删除

queryser=df.loc[:,'销售数量']>0 #设置查询条件

print('删除异常值之前',df.shape)

df= df.loc[queryser,:] #条件的应用

print('删除异常值之后',df.shape)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值