版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四Pandas统计分析
1.实验类型
设计型实验
2.实验目的和要求
(1)掌握csv数据读取方法。
(2)掌握DataFrame的常用属性与方法。
(3)掌握pandas描述性统计方法。
(4)掌握时间字符串和标准时间的转换方法。
(5)掌握时间信息提取的方法。
(6)掌握时间数据的算术运算。
(7)掌握分组聚合的原理与步骤。
(8)掌握agg/apply聚合方法。
(9)掌握透视表、交叉表的制作方法。
3.实验内容
题目一:读取并查看P2P网络贷款数据主表的基本信息
⑴训练要点
•掌握csv数据读取方法。
•掌握DataFrame的常用属性与方法。
•掌握pandas描述性统计方法。
探索数据的基本信息,洞察数据的整体分布,数据的类属关系,从而发现数
据间的关联。
(2)需求说明
P2P网络贷款主表数据Training.主要存放了网贷用户的基本信息。探索数据
的基本信息,能够洞察数据的整体分布、数据的类属关系,从而发现数据间的关
联。
⑶实现步骤
•使用ndim、shape^memory_usage属性分别查看维度、大小、占用内存
信息。
•使用describe方法进行描述性统计,并剔除值相同或全为空的列(包括
部分数据为相同值,剩下数据为空的列)。
题目二:提取登录信息表的时间信息
⑴训练要点
•掌握时间字符串和标准时间的转换方法。
•掌握时间信息提取的方法。
•掌握时间数据的算术运算。
(2)需求说明
用户登录信息表Training.中均存在大量的时间数据,提取时间数据内存在的
信息,一方面可以加深对数据的理解,另一方面能够探索这部分信息和目标的关
联程度。同时用户登录时间('Loglnfo3')、借款成交时间('Listinginfol')这些
时间的时间差信息也能够反映出P2P网络贷款不同用户的行为信息。
⑶实现步骤
•使用to_datetime函数转换用户登录信息表的时间字符串。
•新增3歹IJ,取值分别为字段'Listinginfol'的时间信息:年、月、周。
•计算用户登录信息表中两时间的差,分别以日、小时、分钟计算。
题目三:使用分组聚合方法进一步分析登录信息表
⑴训练要点
•掌握分组聚合的原理与步骤。
•掌握agg/apply聚合方法。
(2)需求说明
分析用户登录信息表时,除了提取时间本身的信息外,还可以结合用户编号
进行分组聚合,然后进行组内分析。通过组内分析可以得出每组组内的最早和最
晚信息更新时间、最早利最晚登录时间、信息更新的次数、登录的次数等信息。
⑶实现步骤
•使用groupby方法对用户登录信息表按用户Id进行分组。
•使用agg方法求取分组后的最早和最晚登录时间与最早借款成交时间,
并使用apply函数在每一行上计算最早借款成交时间与最早登录时诃的
差值。
题目四:使对登录信息表进行长宽表转换
(1)训练要点
•掌握透视表、交叉表的制作方法。
⑵需求说明
通过对数据的描述性统计,以及时间数据信息提取,分组聚合操作已经获得
了相当多的信息,但登录信息表Training.是长表,而主表是宽表,需要通过长宽
表转换将数据合并在一张表内。
⑶实现步骤
•使用povit_table函数进行长宽表转换:
登录信息表Training.以'Idx'为行索引,列索引为1oglnfo2',值为
,Loginfol',聚合函数为count生成透视表。
•使用crosstab函数进行长宽表转换:
登录信息表Training.以]dx,为行索引,列索弓I为'Loginf。?,值为
4Loginfol,,聚合函数为count,生成交叉表。
4.实验背景知识
pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建
的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据
集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
所有知识点的实例均在“课堂代码实例”中。
(1)查看数据的大小、维度、占用内存信息
使用属性ndim可以查看数据的维度,shape查询数据的形状大小,
memory_usage函数查看数据的占用内存信息。
In[16]:print("氏度:=excelData.size)*Series长度.包括::
print("形状:=excelData.shape)*形状,(•)
print("维度:=excelData.ndim)a维度
print("类型:=excelData.<1types)#类型
print(”获取列索引:”,excelData.columns)
print(”获取行索引:",excelData.index)
长度:3285
形状:(365,9)
维度:2
类型:dateobject
maxTempobject
minTempobject
weatherobject
windDictobject
windPowercbject
AQIint64
AQIInfocbject
AQILevelint64
dtype:object
获位列索引:Index(['date','maxTemp','minTemp','eather','windDict','windPower','AQI'
*AQIInfo','AQILevel*],
dtype=,cbject')
获取行索引:RangeIndex(start=0,stop=365,step=l)
图1查看数据属性代码实例
In[15j:print("内存使用情况",excelData.memory_usage())
内存使用情况Index128
date2920
iiaxTemp2920
ninTemp2920
veather2920
vindDict2920
vindPower2920
AQI2920
AQIInfo2920
AQILevel2920
dtype:int64
图2查看内存使用情况
(2)描述统计
describe函数能够一次性得出数据框所有数值型特征的非空值数目、均值、四
分位数、标准差。
In[11]:df.describe()
Out[11]:
maxTempminTempAQIAQILevel
count365.000000365.000000365.000000365.000000
mean18.6657538.35890482.1835622.090411
std11.85804611.75505351.9361591.029798
min-5.000000-12.00000021.0000001.000000
25%8.000000-3.00000046,0000001.000000
50%21.0000008.00000069.0000002.000000
75%29.00000019.000000104.0000003.000000
max38.00000027.000000387.0000006.000000
图3describe函数示例
(3)剔除值相同或全为空的列
方法1:
describe函数返回了非空值数目与方差,可根据这2项判断值是否相同或全
为空。再通过函数可以删除指定的行与列。
方法2:
e函数可从列中提取唯一值,返回结果包含空值;series.value_counts函数返
回一个Series,其中包含唯一值的计数。默认情况下,它不包含NA值,可通过
dropna进行设置。这俩个方法均可判断列的值是否相同或全为空。再通过函数
可以删除指定的行与列。
In[5]:df=pd.DataFrame({"a”:[1,2,3],
"b”:[np.nan,np.nan,np.nan]})
df
Out[5]:
ab
01NaN
12NaN
23NaN
In[6]:df['a'].unique()
Out[6]:array([1,2,3],dtype=int64)
In[7]:df['b'].unique0
Out[7]:array([nan])
In[8]:df.loc[:,'a'].value_counts()
Out[8]:11
21
31
Name:a,dtype:int64
In[9]:df.loc[:,'b*].value_counts(dropnaFalse)
Out[9]:NaN3
Name:b,dtype:int64
In[10]:df,loc[:,*b#].count0
Out[10]:0
图4e与series.value_counts示例代码
(4)时间字符串转换为标准时间格式
pandas提供的to_datetime函数,能够将时间相关的字符串都会转换成为
Timestampo
In[45]:dates=pd.to_datetime([datetime(2021,10,23),'24thofOctober,2021,,
'2021-Oct-25','10-26-2021','20211027'])
dates
Out[45]:Datetimelndex([,2021-10-23,,12021-10-24*,*2021-10-25*,*2021-10-26,,
*2021-10-27*],
dtype='datetime64[ns]',freq=None)
图5to_datetime函数示例代码
(5)提取时间序列数据信息
结合pandas提供的转换函数,如map、apply,可以实现对DataFrame某一
列时间信息数据年份,月份,周信息的提取。
In[2J:叫"[污柒指数燧伤为0-50.51-100、101150.151-2C0.201300和大广300六科
*优、R、花依力柒.中度污集、叭发污柒.严蛆污柒
dofAQIUv(»l_nap(aqi):-aqiAQILevel的中的,公大青
ifaqi=1:
return"优":
elifaqi=2:
return”良■:
olifaqi-3:
return'轻度污臭";
elifaqi-4:
return"中度河会":
elifaqi=5:
return行染T:
olifaqi"■6:
return"严》R污柒;
else:
return
df.loc[:/AQILevel*].nap(AQILevel.map)
Out[2]:date
2018-O1-C1口
2018-01-C2优
2018-01-C3优
2018-01-04优
2018-01-05优
优
2018-12-27优
2018-12-28优
2018-12-29
优
2018-12-30
2018-12-31ft
Name:AQILevel.Length:365.dtype:object
图6m叩函数示例代码
In[23]:datel=pd.TimestampC10-26-20219:13:45,)
datel
Out[23]:TimestampC2021-10-2609:13:45,)
In[24]:datel.year
Out[24]:2021
In[25]:datel.day
Out[25]:26
In[80]:datel.week
Out[80]:43
In[26]:datel.quarter
Out[26]:4
In[27]:datel.is_leap_year
Out[27]:False
图7Timestramp相关属性
(6)加减时间数据
Timedelta能够直接对两个时间序列进行相减,从而得出一个Timedelta。
In[69]:#时间戳相减
pd.to_datetime(,2019-9-4*)-pd.to_datetime(,2018-1-T)
Out[69]:Timedelta('611days00:00:00,)
In[70]:pd.Tin:edelta(days=50)-pd.Timedelta(*10min)
Out[70]:Timedelta(149days23:50:001)
In[71]:pd.Timedelta(days=50)/2
Out[71]:Timedelta(,25days00:00:001)
In[72]:tDelta=pd.Timedelta(*50days12:10:00*)
才转换为秒
sees=tDelta.total_seconds()
sees
Out[72]:43638C0.0
In[73]:I#转化为小时
sces/€0/60
Out[73]:1212.1666666666667
图8Timedelta计算示例代码
(7)使用groupby方法对数据分组
使用groupby函数对用户登录信息表按Id进行分组。
In'll]:groups=df.groupby(['weather'windDict'])
groups
Out[11]:<pandas.core.groupby.generic.DataFrameGroupByobjectatOx0000022E54F40D30>
In[12]:a通过gejgroup获取某•分组参数为元组(顺序数)
groups.get_group(C多云','东北风'))
0ut[12]:
yearmonthdaymaxTempmlnTempweatherwlndDIctwlndPowerAQI
2420ie125-3-11多云32级27
53201622310•4多云和烟,1-2级45
1122018423199多云Sdtlxl34级34
177?01£6?737♦云兄网34级54
20720ie7273223多云和网「2级65
22620U8153224多云和网3Y级33
32620ie112370多云的呕2级93
343201612101-6多云利网1级79
36420161231-2-10多云3dtM1级56
图9groupby函数示例代码
(8)使用agg函数进行聚合
使用agg函数对各个分组结果进行聚合操作.
不同列使用不同的聚合函数:利用字典进行聚合操作的指定
In[22]:#统计锤个月日单高温咱最小值2及日最吟温中最卜冉
df.groupby(df['month']).agg({'maxTemp,:['min','max'],'minTemp1/max'})
Out[22]:
maxTempmlnTemp
minmaxmax
month
1-47-4
2-1120
342711
4103017
5183522
6233825
7253727
8263627
9193120
10142514
117186
12-5102
图lOagg函数示例代码
(9)使用apply函数转换数据
In[27]:u返网每个月AQ1的最大值
defget_maxNum(df):
dfl=df.sort_values(by='AQI',ascending=False)
returndfl.ilocLO,:]
maxTempDf=df.groupbyCmonth').apply(get_maxNum)
maxTempDf
Out[27]:
yearmonthdaymaxTempminTempweatherwlndDIctwlndPowerAQI
month
120181146-5晴~多云西1网1-2级187
2201822770明1-2级220
32018328259多云-晴^<11-2级387
42018422611多云1讽1-2级287
520185122816小雨东南风3Y级186
620186263625卫西南风3*4级174
720187203327多云西南风34级116
82018823626多云-晴南风1-2级118
920189142819小雨-多云南风1-2级128
10201810151711小雨1讽1-2级198
1120181114135多云南风1-2级266
12201812292戢多云钿皈1级234
图11apply函数示例代码
(10)使用povit_table函数和crosstab进行长宽表转换
In[4]:dd=pd.pivot_table(df,values=['maxTemp','minTemp'],index=,month',
columns=,year',aggfunc=[min,max])
dd
Out[4]:minmax
maxlempminTempmaxTempminTemp
year20182019201820192018201920182019
month
1-4-3-12-13784-5
2-10-10-1112130-1
345-4-52728*110
410111030311716
5181910935362221
62324171638392524
7252622
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年幼儿园花样篮球文字介绍
- 输电线路无人机巡检方案
- 高温对新冠疫苗冷链保存效果的影响
- 幼儿园混龄编班对幼儿社会性发展影响研究-基于2024年混龄班与同龄班对比数据
- 骨髓细胞形态学教学的标准化与数字化图谱应用
- 甘肃省天水市麦积区部分学校2025-2026学年高二上学期1月期末考试地理试题(解析版)
- 江西省萍乡市2024-2025学年高二上学期期末考试语文试题(解析版)
- 小升初数学面试模拟试题汇编
- 压力容器安全基础知识培训材料
- 高考英语试题解析与答题技巧
- 金属非金属矿山充填工程技术标准
- 全国初中数学优质课一等奖《一元一次不等式组》课件
- 2024年北京中考记叙文阅读专题02写 人记事散文(含答案解析)
- 肛肠科无痛技术课件
- 教师培训的教学技能与课堂管理
- 产后骨盆修复培训课件
- 2022年04月江苏南京林业大学招聘10人笔试题库含答案解析
- 第二节真理与价值案例
- 热控专业施工方案
- 22个专业95个病种中医诊疗方案第一部分
- JJG 52-2013弹性元件式一般压力表、压力真空表和真空表
评论
0/150
提交评论