实验pandas基本使用

1. 实验内容

(1)pandas导入
(2)创建Series对象和DataFrame数据表
(3)DataFrame数据表索引切片
(4)DataFrame数据表添加删除行列操作
(5)DataFrame数据表的排序、排名、分组合并操作
(6)DataFrame数据表的分类数据转换赋值缺失值的处理

2.目的要求

(1)学会pandas导入
(2)掌握Series和DataFrae数据表的创建。
(3)掌握DataFrame数据索引切片方法
(4)掌握DataFrame添加删除行列操作
(5)掌握DataFrame数据表的排序、排名、分组合并操作
(6)掌握DataFrame数据表的分类数据转换赋值缺失值的处理方法。

3.实验方法手段及其条件

(1)编写程序完成Series和DataFrame对象基本创建。

① 根据列表[2, 8, -5, 6, 7]创建Series对象s1并显示

import pandas as pd
s1=pd.Series([2, 8, -5, 6, 7]) 
s1

② 为列表[2, 8, -5, 6, 7]指定索引值[‘d’, ‘b’, ‘a’, ‘c’, ‘e’], 创建Series对象s2,显示s2并使用indexvalues属性查看s2索引名和值。

s2=pd.Series([2, 8, -5, 6, 7],index=['d', 'b', 'a', 'c', 'e'])
s2
#使用indexvalues属性查看s2索引名和值。
print(s2.index)
print(s2.values)

字典对象data定义如下
data = {‘name’: [‘zs’,‘ls’,‘ww’,‘zl’,‘lq’],
‘age’: [23,24,22,25,21],
ht’: [1.6,1.7,1.65,1.82,1.72]}
使用字典对象data创建DataFrame对象member,行索引值为[‘101’,‘102’,‘103’,‘104’, ‘105’]。member输出结果如下所示
在这里插入图片描述

data = {'name': ['zs','ls','ww','zl','lq'],
        'age': [23,24,22,25,21],
        'ht': [1.6,1.7,1.65,1.82,1.72]}
member=pd.DataFrame(data,index=['101','102','103','104', '105'])
member=member[['name','age','ht']]
member

要求:显示member并使用columns、indexvalues属性查看member的列索引名、行索引名和值。

print(member.columns)
print(member.index)
print(member.values)

④ 根据numpy的ndarray对象np1创建DataFrame对象d2并显示d2。
np1=np.arange(10).reshape(5,2)

import numpy as np
np1=np.arange(10).reshape(5,2)
d2=pd.DataFrame(np1)
d2
(2)编写程序完成DataFrame数据表对象member的索引与切片操作

① 使用列表列名索引方法查看“name”列的内容输出结果如下所示

在这里插入图片描述

member['name']

使用列表列名索引方法查看“name”和“age”列的内容输出结果如下所示

在这里插入图片描述

member[['name','age']]

③ 使用索引切片查看“101”至“103”行的内容输出结果如下所示
在这里插入图片描述

member[:'103']

④ 使用loc方法和iloc方法查看“101”和“103”行的内容,输出结果如下所示
在这里插入图片描述

member.loc[['101','103']]
member.iloc[[0,2]]

⑤ 使用loc方法和iloc方法查看“102” 和“name”的内容,输出结果如下所示
在这里插入图片描述

member.loc[['102'],['name']]
member.iloc[[1],[0]]

⑥ 使用loc方法和iloc方法查看“101”和“103”对应的“name”和“ht”的内容,输出结果如下所示
在这里插入图片描述

member.loc[['101','103'],['name','ht']]
member.iloc[[0,2],[0,2]]
(3)编写程序完成DataFrame数据表对象member的列/行添加删除操作

追加列“wt”: [55, 60, 70, 68, 57]和“gender”: [‘f’,‘m’,‘f’,‘m’,‘m’],输出结果如下所示。
在这里插入图片描述

member['wt']=[55, 60, 70, 68, 57]
member['gender']= ['f','m','f','m','m']
member

修改wt列名为“weight”。输出结果如下所示。
在这里插入图片描述

member.rename(columns={'wt':'weight'},inplace=True)
member

删除列“gender”。 输出结果如下所示。在这里插入图片描述

del member['gender']
member
(4)编写程序完成DataFrame数据表对象stu和scoresheet排序、排名、分组合并操作。

① 创建DataFrame数据表对象stu和scoresheet,如下所示。
在这里插入图片描述

data1 = {'Name': ['Zhang San','Li Si','Wang Laowu','Zhao Liu','Qian Qi','Sun Ba'],
        'Score': [98,76,84,70,93,83],
        'Subject': ['Python','C++','Python','C++','Python','Java']}
scoresheet=pd.DataFrame(data1,index=['101','102','103','104', '105','106'])
scoresheet

在这里插入图片描述

data0 = {'Name': ['Zhang San','Li Si','Wang Laowu','Zhao Liu','Qian Qi','Sun Ba','Hu Jiu'],
        'Major': ['network','network','hardware','hardware','software','hardware','hardware'],
        'Class': [1,2,3,1,2,2,2]}
stu=pd.DataFrame(data0,index=['101','102','103','104', '105','106','107'])
stu

② stu按‘Major’和‘Class’升序排列scoresheet按‘Score’降序排列,输出结果如下所示。
在这里插入图片描述

stu.sort_values(by=['Major','Class'],inplace=True)
stu

在这里插入图片描述

scoresheet.sort_values(by='Score',ascending=False)

③ scoresheet修改‘zhao Liu’和‘Qian Qi’的‘Score’值为98,并返回学生的‘Score’降序排名,排名相同时取最小排名,输出结果如下所示。
在这里插入图片描述

scoresheet.iloc[3,1]=98
scoresheet.iloc[4,1]=98
scoresheet

在这里插入图片描述

scoresheet.sort_values(by=['Score']).rank(method='min',ascending=False).sort_index()

scoresheet按‘Subject’分组,查看‘Python’分组信息,并对三门课程的‘Score’进行描述统计分析,输出结果如下所示。
在这里插入图片描述

scoresheet.groupby('Subject').get_group('Python')

在这里插入图片描述

scoresheet.groupby('Subject').describe()

⑤ 使用concat函数将stu和scorsheet横向合并,输出结果如下所示。
在这里插入图片描述

pd.concat([stu,scoresheet],axis=1).sort_index()

⑥ 使用merge函数将stu和scoresheet按‘Name’关键字合并,输出结果如下所示。
在这里插入图片描述

pd.merge(stu.sort_index(),scoresheet.sort_index(),on='Name')
(5)编写程序完成DataFrame数据表对象stu和scoresheet的分类数据和缺失数据操作。

设置DataFrame数据表对象stu的“Class”列为category类型数据,追加列“Class_name”其对应“Class”列的值:1-17物联网1班、2-17物联网2班、3-17物联网3班,输出结果如下所示。
在这里插入图片描述

stu['Class'].astype('category')
Class_name = pd.DataFrame({'Class':[1,2,3],
                            'Class_name':['17物联网1班','17物联网2班','17物联网3班']},
                            index=[101,102,103],dtype='category')
stu_Class_name = pd.merge(stu,Class_name,on='Class',how='left',indicator=False,validate=None)
stu_Class_name.index=[101,102,103,104, 105,106,107]
stu_Class_name

② 按照“Class_name”排序,要求排序顺序为: ‘17物联网2班’,‘17物联网3班’,‘17物联网1班’,输出结果如下所示。
在这里插入图片描述

stu_Class_name['Class_name'] = stu_Class_name['Class_name'].cat.set_categories(['17物联网2班','17物联网3班','17物联网1班'])
stu_Class_name.sort_values(by=['Class_name'], ascending=True)

③ scoresheet中修改‘Zhao Liu’和‘Qian Qi’的‘Score’值为缺失值,并使用线性插值法填充该缺失值,输出结果如下所示。
在这里插入图片描述

scoresheet.iloc[3,1]=None
scoresheet.iloc[4,1]=None
scoresheet.interpolate().sort_index()

原文地址:https://blog.csdn.net/m0_56638797/article/details/128171211

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_23102.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注