【大数据处理与可视化】三 、Pandas库的运用

【大数据处理与可视化】三 、Pandas库的运用


实验目的

  1. 能够熟练运用pandas库创建Series对象和DataFrame对象;
  2. 能够熟练运用Series对象和DataFrame对象的索引操作和排序操作;
  3. 能够熟练运用pandas库,进行统计计算和统计描述;
  4. 能够熟练运用pandas库进行读写数据操作

实验内容

一、使用pandas库分别创建Series对象和DataFrame对象,并对创建的对象使用索引、排序等相关操作;练习DataFrame对象的统计计算和统计描述的功能。

1、创建一个DataFrame(df),用data做数据,labels做行索引
2、显示有关此df及其数据的基本信息的摘
3、查看此df的前三行数据
4、选择df中列标签为animal和age的数据
5、选择行为[‘d’, ‘e’, ‘i’],且列为[‘animal’, ‘age’]中的数据
6、选择visuts大于3的行
7、选择age为缺失值的行
8、选择animal为cat,且age小于3的行
9、将f行的age改为1.5
10、计算visits列的数据总和
11、计算每种animal的平均age
12、追加一行(k),列的数据自定义(如可以等于a行的数据),然后再删除新追加的k行
13、计算每种animal的个数(cat有几个,dog几个…)
14、先根据age降序排列,再根据visits升序排列
15、将priority列的yes和no用True和False替换
16、将animal列的snake用python替换

二、给定数据使用Pandas的基础知识对北京高考分数线统计分析,分析出:一本文理科与二本文理科最高的分数线是多少,最低的分数线是多少,相差多少分;求2006年-2008年近13年分数线平均分。


实验步骤

一、使用pandas库分别创建Series对象和DataFrame对象,并对创建的对象使用索引、排序等相关操作;练习DataFrame对象的统计计算和统计描述的功能。

1&2、创建一个DataFrame(df),用data做数据,labels做行索引,显示有关此df及其数据的基本信息的摘要

代码:

import pandas as pd
import numpy as np
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
data = {'animal': pd.Series(['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
                            index=labels),
      'age': pd.Series([2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
                      index=labels),
      'visits': pd.Series([1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
                         index=labels),
      'priority': pd.Series(['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no'],
                            index=labels)}
df = pd.DataFrame(data)
df

截图:

在这里插入图片描述


3、查看此df的前三行数据

代码:df[0:3]
截图:
在这里插入图片描述


4、选择df中列标签为animal和age的数据

代码:df[['animal','age']]
截图:

在这里插入图片描述


5、选择行为[‘d’, ‘e’, ‘i’],且列为[‘animal’, ‘age’]中的数据

代码:df.loc[['d','e','i'],['animal','age']]
截图:

在这里插入图片描述


6、选择visuts大于3的行

代码:

visits_bool = df['visits']>3
df[visits_bool]

截图:

在这里插入图片描述


7、选择age为缺失值的行

代码:

age_bool = df['age'].isnull()
df[age_bool]

截图:

在这里插入图片描述


8、选择animal为cat,且age小于3的行

代码:df[(df['animal']=="cat")&(df["age"]<3)]
截图:

在这里插入图片描述


9、将f行的age改为1.5

代码:

df.loc[['f'],['age']] = 1.5
df

截图:

在这里插入图片描述


10、计算visits列的数据总和

代码:sum(df['visits'])
截图:

在这里插入图片描述


11、计算每种animal的平均age

代码:df.groupby('animal')['age'].mean()
截图:

在这里插入图片描述


12、追加一行(k),列的数据自定义(如可以等于a行的数据),然后再删除新追加的k行

代码:

df.loc['k']=df.loc['a'].values
df
df.drop('k')

截图:

在这里插入图片描述


13、计算每种animal的个数(cat有几个,dog几个…)

代码:df.groupby('animal').size()
截图:

在这里插入图片描述


14、先根据age降序排列,再根据visits升序排列

代码:df.sort_values(by=['age', 'visits'], ascending=[False, True])
截图:

在这里插入图片描述


15、将priority列的yes和no用True和False替换

代码:

df['priority'] = df['priority'].replace(to_replace=['yes', 'no'], value=[True, False])
df

截图:

在这里插入图片描述


16、将animal列的snake用python替换

代码:

df['animal'] = df['animal'].replace(to_replace='snake', value='python')
df

截图:

在这里插入图片描述


二、给定数据使用Pandas的基础知识对北京高考分数线统计分析,分析出:一本文理科与二本文理科最高的分数线是多少,最低的分数线是多少,相差多少分;求2006年-2008年近13年分数线平均分。

1、首先读取表格内容

代码:

import pandas as pd
df_obj=pd.read_excel('D:/scores.xlsx',header=[0,1])
df_obj

截图:

在这里插入图片描述


2、通过sort_index()=方法让DataFrame对象按照从大到小的顺序排列

代码:

sorted_obj=df_obj.sort_index(ascending=False)
sorted_obj

截图:

在这里插入图片描述


3、获取历年一本、二本文理科最高和最低的分数线及极差

代码:

sorted_obj.max()
sorted_obj.min()
result1=sorted_obj["一本分数线","文科"].ptp()
result1
result2=sorted_obj["一本分数线","理科"].ptp()
result2
result3=sorted_obj["二本分数线","文科"].ptp()
result3
result4=sorted_obj["二本分数线","理科"].ptp()
result4

截图:

在这里插入图片描述


4、比较2018年一本与二本文理科分数线的差值

代码:

ser_obj1=sorted_obj["一本分数线","文科"]
ser_obj1[2018] - ser_obj1[2017]

ser_obj2=sorted_obj["一本分数线","理科"]
ser_obj2[2018] - ser_obj2[2017]

ser_obj3=sorted_obj["二本分数线","文科"]
ser_obj3[2018] - ser_obj3[2017]

ser_obj4=sorted_obj["二本分数线","理科"]
ser_obj4[2018] - ser_obj4[2017]

截图:

在这里插入图片描述


5、计算2006-2018年的平均分数线

代码:sorted_obj.describe()
截图:

在这里插入图片描述


实验小结

       通过本次实验,我了解了科学计算库Pandas,包括Pandas常用的数据结构、索引的相关操作、算术运算、文件的读取操作等。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项:
1、有疑问前,知识学习前,先用搜索。
2、熟读写基础知识,学得会不如学得牢。
3、选择交流平台,如QQ群,网站论坛等。
4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢热型网友.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值