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

Python科学计算库练习题

文章目录

    • 1.1python概述
      • 案例一:Matplotlib图表初体验
    • 1.2Numpy数据计算
      • 案例一:一维数组的创建、索引及切片
      • 案例二:Numpy常用的函数
    • 1.3Pandas数据分析
      • 案例一:创建DataFrame)对象
      • 案例二: 数据抽取、增加、修改及删除
      • 案例三:数据缺失值处理
      • 案例四:数据的计算函数
    • 1.4Matplotlib数据可视化

1.1python概述

案例一:Matplotlib图表初体验

import matplotlib.pyplot as plt

x=["1-3","4-6","7-9","10-12"]  #设置X轴数值
y=[257,301,428,475]            #设置Y轴数值
plt.plot(x,y)                  #绘制折线图
plt.grid(True, linestyle='--', alpha=1) #添加网格线
plt.show()                     #展示

image-20220909200607621

1.2Numpy数据计算

案例一:一维数组的创建、索引及切片

任务说明:

(1)NumPy提供的array函数可以创建一维数组或多维数组。使用array函数把如下图示的员工的年龄创建为一维数组

(2)使用数组的索引,分别获取“Mary”和“LiLi”的年龄
(3)对数组进行分割,同时获取“Mary”和“LiLi”的年龄、“LiLi”和“Cendy”的年龄以及“Mary”和“Cendy”的年龄

代码实现:

#(1)创建出数组
import numpy as np
score=np.array([["Mary",22,95.5],["LiLi",23,56],["Cendy",22,90]])
score

#(2)对数据进行切片(先行后列)
score[:2,1]

#(3)数组分割

案例二:Numpy常用的函数

任务说明:

(1)算术函数
使用NumPy 算术函数add()、subtract()、multiply()、divide()实现如下两个数组之间的加减乘除。

代码实现:

import numpy as np
n1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
n2 = np.array([1, 2, 3])  # 一维数组

n3=np.add(n1,n2)
n4=np.subtract(n1,n2)
n5=np.divide(n1,n2)

(2)排序函数

import numpy as np
dt = np.dtype([('name',"S10"),('age',int),('KPI',int)]) 
n1=np.array([('Mary', 22, 95.5), ('LiLi', 23, 56), ('Cendy', 22, 90)],dtype = dt)
n1.sort(axis=0,order="KPI")
n1

image-20220910155536867

1.3Pandas数据分析

案例一:创建DataFrame)对象

任务说明:以员工薪资构成为例,其包含基本薪资、绩效薪资和补贴,数据如下:

image-20220909202502919

代码实现:

import pandas as pd

data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df

image-20220910101617640

import numpy as np
arr = np.array([4, 7, 1, 6, 1, 8, 4, 9, 1, 6]) 
arr1=np.unique(arr)
arr1

#array([1, 4, 6, 7, 8, 9])

案例二: 数据抽取、增加、修改及删除

任务说明:

image-20220910095232582

image-20220910095245980

代码实现:

#(1)使用loc属性和iloc属性抽取第一行数据

import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[0]

image-20220910101645453

#(2)增加奖金列方式一:直接赋值法
import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df['奖金']=['122','222','333']
df

image-20220910101551447

#(2)增加奖金列方式二:loc属性法
import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[:,'奖金']=['122','222','333']
df
#(2)增加奖金列方式三:指定位置插入
import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.insert(loc=2, column='奖金', value=100)  # 在最后一列后,插入值全为3的c列
df

#(3)增加行数据:在指定行,加入指定数据
import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.insert(loc=2, column='奖金', value=100)  # 在最后一列后,插入值全为3的c列
df.loc[3]=['Alice','1000','1000','1000','100']
df

image-20220910102908964

3)增加多行数据
import pandas as pd
data=[['Mary',"2500","5800","500"],["LiLi","2500","7800","650"],["Gendy","2500","10500","200"]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.insert(loc=2, column='奖金', value=100)      # 在最后一列后,插入值全为3的c列
df.loc[3]=['Alice','1000','1000','1000','100']  # 在指定行添加数据
data1=[['Liming',"2500","5800","500"],["LiLi1","2500","7800","650"],["Gendy1","2500","10500","200"]]
df1=pd.DataFrame(data1,columns=['姓名','基本薪资','绩效津贴','补贴'])
df1

df.append(df1,ignore_index=True)#让索引重写进行排序

image-20220910141136422

案例三:数据缺失值处理

任务说明:

1)删除缺失值
使用 dropna 函数删除含有缺失值的行

2)填充缺失值
DataFrame 对象中的 fillna 函数可以实现填充缺失数据

代码实现:

#(1)查看缺失值

import pandas as pd
df = pd.read_csv('property-data.csv')
df.info()

image-20220910142740215

#(2)删除含有缺失值的行

import pandas as pd
df = pd.read_csv('property-data.csv')
new_df=df.dropna()
new_df

默认情况下,dropna() 方法返回一个新的 DataFrame,不会修改源数据。

image-20220910143029301

#(3)对空值进行填充替代

import pandas as pd
df = pd.read_csv('property-data.csv')
df.fillna(12345, inplace = True)
print(df.to_string())

image-20220910143143918

案例四:数据的计算函数

任务说明:

image-20220910144313821

代码实现:

#(1)任务1:使用 DataFrame 对象的 sum 函数实现行/列数据的求和运算,效果如下:
import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df['奖金']=['122','222','333']
df.loc[:,'总薪资']=df.sum(axis=1)
df

image-20220910144401951

#(2)任务2:每行的平均数
import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df['奖金']=['122','222','333']
df.loc[:,'总薪资']=df.mean(axis=1)
df

image-20220910145403512

#该行最大值
import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df['奖金']=['122','222','333']
df.loc[:,'总薪资']=df.max(axis=1)
df

#该行最小值
import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df['奖金']=['122','222','333']
df.loc[:,'总薪资']=df.max(axis=0)
df

下面的内容为每一列的求和与计算:

import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[3]=df.iloc[:,1:5].max(axis=0)#求每一列的最大值
df

image-20220910151357567

import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[3]=df.iloc[:,1:5].mean(axis=0)#求出每一列的平均值
df

image-20220910151350706

import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[3]=df.iloc[:,1:5].min(axis=0)#求出每一列的最小值
df

image-20220910151559518

import pandas as pd
data=[['Mary',2500,5800,500],["LiLi",2500,7800,650],["Gendy",2500,10500,200]]
df=pd.DataFrame(data,columns=['姓名','基本薪资','绩效津贴','补贴'])
df.loc[3]=df.iloc[:,1:5].sum(axis=0) #求出每一列的和
df

image-20220910151829847

1.4Matplotlib数据可视化

import matplotlib.pyplot as plt 
import random # 画出温度变化图 



# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 

# 创建画布
plt.figure(figsize=(20, 8), dpi=80) 

# 绘制折线图 
plt.plot(x, y_shanghai) 

#添加网格
plt.grid(True, linestyle='--', alpha=1)

# 构造x轴刻度标签 
x_ticks_label = ["11h{}min".format(i) for i in x] 

# 构造y轴刻度 
y_ticks = range(40) 

# 修改x,y轴坐标的刻度显示 
plt.xticks(x[::5], x_ticks_label[::5]) 

plt.yticks(y_ticks[::5])

# 增加北京的温度数据 
y_beijing = [random.uniform(1, 3) for i in x] 
# 绘制折线图 
plt.plot(x, y_shanghai) 
# 使用多次plot可以画多个折线 
plt.plot(x, y_beijing, color='r', linestyle='--')

plt.xlabel("time") 
plt.ylabel("temperature") 
plt.title("temperature variation", fontsize=20)

# 显示图像 
plt.show()

image-20220910163852888

相关文章:

  • 高性能MySQL实战第10讲:搭建稳固的MySQL运维体系
  • java毕业设计茶叶企业管理系统Mybatis+系统+数据库+调试部署
  • JAVA安装教程 (windows)
  • 6.hadoop文件数据库系列讲解
  • Day11OSI与TCP/IP协议簇以及物理层
  • Javaweb学生信息管理系统(Mysql+JSP+MVC+CSS)
  • ubuntu-hadoop伪分布
  • springboot 多环境配置(pom配置Profiles变量来,控制打包环境)
  • 计算机毕业设计ssm蓟县农家院网站2zl2w系统+程序+源码+lw+远程部署
  • 刷题记录(NC16645 [NOIP2007]矩阵取数游戏,NC207781 迁徙过程中的河流,NC235953 最大m个子段和)
  • 【网络服务数据库教程】05 LAMP 部署
  • QScintilla学习大全
  • 【计算机网络】第三章:数据链路层
  • 复习C部分:1.看代码求值题 2.写三个整数代码从大到小输出 3.打印1~100中所有3的倍数 4.给定两个数,求最大公约数(递减法,辗转相除法)
  • 网络安全笔记-Web架构
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • css系列之关于字体的事
  • CSS中外联样式表代表的含义
  • Effective Java 笔记(一)
  • ES6 ...操作符
  • express如何解决request entity too large问题
  • JavaWeb(学习笔记二)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • KMP算法及优化
  • Redis的resp协议
  • SpringCloud集成分布式事务LCN (一)
  • Vue组件定义
  • 订阅Forge Viewer所有的事件
  • 基于webpack 的 vue 多页架构
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 无服务器化是企业 IT 架构的未来吗?
  • 一些css基础学习笔记
  • 移动端唤起键盘时取消position:fixed定位
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 阿里云服务器如何修改远程端口?
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 飞书APP集成平台-数字化落地
  • $(function(){})与(function($){....})(jQuery)的区别
  • $L^p$ 调和函数恒为零
  • (3)选择元素——(17)练习(Exercises)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (二)fiber的基本认识
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)Unity3DUnity3D在android下调试
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 项目指定SDK版本
  • /*在DataTable中更新、删除数据*/
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [30期] 我的学习方法
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [BZOJ] 3262: 陌上花开
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用