当前位置: 首页 > news >正文

练习pandas的基础操作,有题目有详解有源码

import numpy as np
import pandas as pd
# 1)创建保存5个学生学号及成绩的Series对象obj1,步骤如下:
# step1: 声明保存包含5个元素的字典,学号为键,成绩为值
# step2: 使用字典创建Series对象
score_data = {'stu1':99, 'stu2':77, 'stu3':88, 'stu4':68, 'stu5':80}
obj1 = pd.Series(score_data)
print(obj1)
stu1    99
stu2    77
stu3    88
stu4    68
stu5    80
dtype: int64
# 2)向Series对象obj1添加一个学生的信息,学号为键,成绩为值
# 1. 数组名[索引] = 内容 的方式直接添加
obj1['stu6'] = 66
print('方法一直接添加:')
print(obj1)
# 2. 使用concat()函数直接合并2个Series数组
print('')
obj2 = pd.Series([98], index=['stu7'])
print(obj2)
obj3 = np.concat([obj1, obj2])
print(f'使用concat()函数直接合并2个Series数组:')
obj4 = pd.Series(obj3, index=['stu'+str(i) for i in range(1, 8)])
print(obj4)
print('')
方法一直接添加:
stu1    99
stu2    77
stu3    88
stu4    68
stu5    80
stu6    66
dtype: int64stu7    98
dtype: int64
使用concat()函数直接合并2个Series数组:
stu1    99
stu2    77
stu3    88
stu4    68
stu5    80
stu6    66
stu7    98
dtype: int64
# 3)查询6个学生中成绩最低的学号
print(obj4)
s = np.where(obj4 == 66)
min_index = obj4.index[s] 
print('6个学生中成绩最低的学号为:', min_index[0])
stu1    99
stu2    77
stu3    88
stu4    68
stu5    80
stu6    66
stu7    98
dtype: int64
6个学生中成绩最低的学号为: stu6
# 4)将所有低于80分的成绩增加5分
print('原数据:')
print(obj4)
print('')
# 方法一:直接添加:
obj5 = obj4[obj4 < 80] + 5
print(obj5)
# 方法二:通过匿名函数进行操作
print('')
obj6 = obj4.apply(lambda x:x+5 if x < 80 else x)
print(obj6)
原数据:
stu1    99
stu2    77
stu3    88
stu4    68
stu5    80
stu6    66
stu7    98
dtype: int64stu2    82
stu4    73
stu6    71
dtype: int64stu1    99
stu2    82
stu3    88
stu4    73
stu5    80
stu6    71
stu7    98
dtype: int64
# 1)通过numpy生成60~99之间的长度为10一维数组,使用数组创建Series对象obj2
data1 = np.random.randint(60, 99, 10)
print('创建的一维numpy数组为:', data1)
print('转换为Series对象:')
obj7 = pd.Series(data1)
print(obj7)
print('----------------------------')
# 2)为series对象obj2重新设置标签索引,索引是a,b,c,d,...,j
print('给obj7添加标签索引:')
obj7.index=[chr(i) for i in range(ord('a'), ord('k'))]
print(obj7)
print('----------------------------')
# 3)使用标签索引获得索引为b-f的5个元素
print('连续的数据直接通过 标签起始:结束标签')
print(obj7['b':'f'])
print('----------------------------')
# 4)使用标签索引获得索引为a,c,f的3个元素
print('若需要的元素不连续,则用列表的方式,逗号分割标签索引')
print(obj7.loc[['a', 'c', 'f']])
print('----------------------------')
# 5)使用布尔索引获得90分以上的成绩
print('获取布尔值:')
print(obj7>90)
print('获取90以上的数据:')
print(obj7[obj7>90])
创建的一维numpy数组为: [92 87 83 90 68 94 81 77 96 94]
转换为Series对象:
0    92
1    87
2    83
3    90
4    68
5    94
6    81
7    77
8    96
9    94
dtype: int32
----------------------------
给obj7添加标签索引:
a    92
b    87
c    83
d    90
e    68
f    94
g    81
h    77
i    96
j    94
dtype: int32
----------------------------
连续的数据直接通过 标签起始:结束标签
b    87
c    83
d    90
e    68
f    94
dtype: int32
----------------------------
若需要的元素不连续,则用列表的方式,逗号分割标签索引
a    92
c    83
f    94
dtype: int32
----------------------------
获取布尔值:
a     True
b    False
c    False
d    False
e    False
f     True
g    False
h    False
i     True
j     True
dtype: bool
获取90以上的数据:
a    92
f    94
i    96
j    94
dtype: int32
# 1)定义DataFrame,并随机生成100行测试数据,数据效果如下:

在这里插入图片描述

# 注意:
# 1)	初期为了方便核对结果,所以本次只生成20行
# 2)	性别在男和女之间随机生成
# 3)	地址在襄阳、武汉、宜昌之间随机生成
# 4)	分数在40-100之间随机生成。sex = ['女', '男']
where = ['襄阳', '武汉', '宜昌']
data = {'name':["student" + str(i) for i  in range(101)], 'sex':[np.random.choice(sex) for i in range(101)],  'address':[np.random.choice(where) for i in range(101)],'python':np.random.randint(40, 101, 101), 'java':np.random.randint(40, 101, 101),'mysql':np.random.randint(40, 101, 101)}
df = pd.DataFrame(data)
print(df)
           name sex address  python  java  mysql
0      student0   女      武汉      75    53    100
1      student1   男      武汉      67    99     55
2      student2   男      襄阳      73    85     89
3      student3   女      武汉      76    78     85
4      student4   男      宜昌      85    43     95
..          ...  ..     ...     ...   ...    ...
96    student96   男      宜昌      99    51     62
97    student97   男      宜昌      96    56     45
98    student98   男      宜昌      47    79     87
99    student99   男      武汉      64    78     67
100  student100   女      襄阳      74    53     55[101 rows x 6 columns]
# 2)给DataFrame增加2列,分别是总分和平均分列,效果如下

在这里插入图片描述

# 添加总分与平均分
df['总分'] = df['python'] + df['java'] + df['mysql'] 
df['平均分'] = np.round(df['总分'] / 3, 1)
print(df)
           name sex address  python  java  mysql   总分   平均分
0      student0   男      武汉      67    93     50  210  70.0
1      student1   女      宜昌      97    41     77  215  71.7
2      student2   男      宜昌      59    52     98  209  69.7
3      student3   男      武汉      52    40     57  149  49.7
4      student4   男      武汉      70    79     64  213  71.0
..          ...  ..     ...     ...   ...    ...  ...   ...
96    student96   女      襄阳      55    50     73  178  59.3
97    student97   男      襄阳      66    90     85  241  80.3
98    student98   女      宜昌      67    48     81  196  65.3
99    student99   女      武汉      97    81     50  228  76.0
100  student100   女      襄阳      90    91     66  247  82.3[101 rows x 8 columns]
# 3)筛选前10行数据
df.head(10)
namesexaddresspythonjavamysql总分平均分
0student0武汉67935021070.0
1student1宜昌97417721571.7
2student2宜昌59529820969.7
3student3武汉52405714949.7
4student4武汉70796421371.0
5student5宜昌48994018762.3
6student6襄阳56407417056.7
7student7武汉55447517458.0
8student8武汉69625018160.3
9student9武汉40495614548.3

http://www.mrgr.cn/news/61247.html

相关文章:

  • Ubuntu/centOS 如何安装 OpenGL
  • kalilinux - 目录扫描之dirsearch
  • npm : 无法加载文件 D:\phpdev\nodejs\npm.ps1
  • git报错处理
  • Linux Top 命令 load average 指标解读
  • Perl语言的网络编程
  • 使用不可靠来源的住宅代理的风险
  • 怎么提取视频里的音频?关于提取视频里音频的几种方法
  • Gartner发布生成式AI的信任、风险和安全管理创新指南:生成式AI的三类风险—内容异常、数据安全和AI应用安全
  • 从理论到实践,精准测试的初创之路
  • Jmeter压力测试简单教程(包括服务器状态监控)
  • 6.标志寄存器
  • 雷池社区版compose配置文件解析-mgt
  • Android实现扫描二维码条形码,实现扫描快递单,相册图片识别快递单 最慢3秒出回调结果
  • WordPress中最值得推荐的AI插件:专家级指南
  • 【动手学强化学习】part7-Actor-Critic算法
  • 自适应神经网络架构:原理解析与代码示例
  • linux系统安装软件的三种方式
  • JavaEE初阶------网络编程续+传输层UDP协议介绍
  • WebGL 3D基础
  • 当变频器报警过热故障时,如何处理
  • 基于SSM的智能台球厅系统
  • CAN物理层(ISO 11898-2 2024)
  • 《掌握 Java:从基础到高级概念的综合指南》(11/15)
  • 解决goravel/gorm自动迁移AutoMigrate 时会将关联关系也一并迁移问题
  • 结合无监督表示学习与伪标签监督的自蒸馏方法,用于稀有疾病影像表型分类的分散感知失衡校正|文献速递-基于生成模型的数据增强与疾病监测应用