python dataframe删除某一列_怎样用Python进行数据分析

本文总结了猴子Live课程:怎样用Python进行数据分析,主讲内容包括Numpy和Pandas。

一、一维数据分析

一维数据分析,可以使用Numpy中Array,也可以使用Pandas中的Series,Series的功能会更多些。

e5fe52dd7f8556c7e949dabcb0a6a0d6.png

Numpy一维数组的使用:

319fea9fb059660d88d2a892f1825f6b.png

Numpy一维数组与Python列表的区别?--Numpy具有统计功能、向量化计算,Numpy数组中的数据类型必须是一致的,Python列表可以存储不同的数据类型。

Pandas一维数组的使用:

Pandas的Series可以创建索引,可以使用describe获取描述性统计信息

9d7f41436e1770caf052830e48ce8d90.png

Pandas的Series获取数据有两种方式,iloc根据元素位置获取值,loc根据索引获取值

fa2c78b0ccbfd303da999756f4060355.png

Pandas - Series支持向量相加,可以使用+号和add,add支持缺失值填充

bdf8794063793af82d98783818e4e4aa.png

二、二维数据分析

Numpy中通过Array创建二维数组,Pandas中通过DataFrame创建二维数组,数据框DataFrame更加广泛。

Numpy二维数组:如何定义二维数组、3种获取元素的情况

be3114ceaf0f768dc5e728b0a3f4d751.png

314c21e0c7e3ec3f55f83da760b58495.png

Numpy数轴参数,指定按照某一行或者某一列进行计算

d7ac3122380a3c07800dd24a24ce5799.png

DataFrame二维数组:

DataFrame相对于Numpy二维数组的优势:

  • DataFrame每一列可以是不同的数据类型
  • DataFrame每一行每一列都有一个索引值,很容易存储常见的表格数据

DataFrame 的创建和使用,学会使用iloc按照位置查询数据,loc按照索引查询数据,通过列表查询某几列数据,通过切片查询数据,以及通过条件判断筛选数据。

097c0cc2330759db75401b21cbe2f40b.png

fd07b6c1a8c121401b2cd2ab0c208937.png

0d311bb80cf2755f46fff6e24c15a4a7.png

853c16ac120f629a5f3441240d4e2860.png

0c6f387f2b77c2c70d97d1e8ba38005f.png

c71b51c31f2a2675a64f7e5d5f23ce82.png

DataFrame:数据集描述性统计信息

cc4500c3b957f46d757e13aeaa551819.png

a5e296e714586ce81c6bc91421e3c3ce.png

ea66e114b2af8133f55d0ea7e1a4c107.png

三、通过案例学习数据分析步骤

数据分析步骤:提出问题、理解数据、数据清洗、构建模型、数据可视化

提出问题:一切的数据分析都是为了解决我们工作或生活中的问题,明确的问题为我们后面的数据分析提供了一个大的目标。

理解数据:根据我们的问题采集数据,将数据导入到数据框中,查看数据集的信息,从整体上了解数据。

数据清洗:对数据进行清洗,很多数据并不符合我们的标准。

构建模型:简单的分析是得到某些业务的指标,复杂的分析需要用到机器学习的算法。

数据可视化:与他人交流自己的数据结果,最好的方式就是使用图表。

案例过程:

1. 提出问题:某医院销售数据,需要获取月均消费次数、月均消费金额、客单价、消费趋势

理解每个业务指标的含义,实际项目中,前期我们需要和业务人员一起讨论明确他们的需求,各个指标的计算公式

2. 理解数据

#1.读取Excel数据(统一按str读入,之后转换)
fileNameStr='./医院销售数据.xlsx'
xls=pd.ExcelFile(fileNameStr, dtype='object')
salesDf=xls.parse('Sheet1',dtype='object')
#2.打印前几行
salesDf.head()
#3.查看有多少行多少列
salesDf.shape()
#4.查看列的数据类型
salesDf.dtypes

3. 数据清洗

数据清洗步骤:

  • 选择子集
  • 列名重命名
  • 缺失数据处理
  • 数据类型转换
  • 数据排序
  • 异常值处理
#1.选择子集
subSalesDf=salesDf.loc[0:4,'购药时间':'销售数据']
#2.列名重命名
colNameDict=['购药时间':'销售时间']
subSalesDf.rename(columns=colNameDict,inplace=True)
#3.缺失数据处理,删除指定列中为空的行,
#how='any'在给定的任何一列中有缺失值就删除
subSalesDf.dropna(subset=['销售时间','社保卡号'],how='any']
#4.数据类型转换,字符串转化为数值
subSalesDf['销售数量']=subSalesDf['销售数量'].astype('float')
subSalesDf['应收金额']=subSalesDf['应收金额'].astype('float')
subSalesDf['实收金额']=subSalesDf['实收金额'].astype('float')
#处理日期,字符串分割split,定义一个分割日期的函数
'''
定义函数:分割销售时间,获取销售日期
输入:timeSereis销售时间这一列,是个Series数据类型
输出:分割后的时间,返回也是个Sereis数据类型
'''
def splitSaletime(timeSeries): 
     timeList=[]
     for value in timeSeries:
    #分割字符串,获取销售日期
          dateStr=value.split('')[0]
           timeList.append(dateStr)
     #将列表转行为一维数据Series类型
     timeSeries=pd.Sereis(timeList)
     return timeSeries
#获取销售时间这一列,对字符串进行分割获取销售日期
timeSeries=subSalesDf.loc[:,'销售时间']
dateSeries=splitSaletime(timeSeries)
#修改销售时间这一列的值
subSalesDf.loc[:,'销售时间']=dateSeries
#字符串转日期
subSalesDf.loc[:,'销售时间']=pd.to_datetime(subSalesDf.loc[:,'销售时间'],format='%Y-%m-%d',errors='coerce')
#转化日期过程中不符合日期格式的数值会被转化为控制None,删除为空的行
subSalesDf.dropna(subset=['销售时间'],how='any']
#5.数据排序,按销售日期进行升序排序
subSalesDf=subSalesDf.sortvalues(by='销售时间',ascending=True)
#重命名行名(index)
subSalesDf=subSalesDf.reset_index(drop=True)
#6.异常值处理
#每一列的描述性统计信息
subSalesDf.describe()
#删除异常值:通过条件判断筛选出数据
#查询条件
querySeries=subSalesDf.loc[:,'销售数据']>0
#应用查询条件
subSalesDf=subSalesDf.loc[querySeries,:]

4. 构建模型

26fa10b5256ac506f1d8554a9ceb581f.png

ed2b66890aaafd76da89da0ec12306dd.png

adfda73db7badc26644e2aee6977eb89.png

0eb490937e2919d970d89a5dd92dc863.png

4d4e741cbd65708b28c60e4d5d972833.png

547b07e7251daa8a87b31c2b3a356081.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值