Python基础:类的深拷贝与浅拷贝-->with语句的使用及三个库:matplotlib基本画图-->pandas之Series创建

一.类的深拷贝与浅拷贝

在这里插入图片描述
在这里插入图片描述

class CPU():pass
class Disk():passclass Computer():#计算机由CPU和硬盘组成def __init__(self):self.cpu = CPU()self.disk = Disk()cpu = CPU()#创建一个CPU对象
disk = Disk()#创建一个硬盘对象#创建一个计算机对象
com = Computer(cpu,disk)
#变量(对象)的赋值
com1 = com
print(com,'子对象的内存地址',com.cpu,com.disk)
print(com1,'子对象的内存地址',com1.cpu,com.disk)# 类对象的浅拷贝
print('-'*40)
import copy
com3 = copy.deepcopy(com) # com2是新产生的对象,com2的子对象,cpu,disk不变
print(com,'子对象的内存地址',com.cpu,com.disk)
print(com3,'子对象的内存地址',com3.cpu,com3.disk)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

章节习题:clc是类方法的参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

私有属性:对象名.下划线类名__属性名

在这里插入图片描述
在这里插入图片描述

计算圆的面积和周长

在这里插入图片描述

class Circle:def __init__(self, r):self.r= r# 计算面积的方法def get_area(self):return self.r * 3.14 * self.r# 计算周长的方法def get_perimeter(self):return self.r * 3.14 * 2# 创建对象
r=eval(input("Enter the radius: "))
c=Circle(r)# 调用方法
area=c.get_area() #调用面积的方法
perimeter=c.get_perimeter() #  调用计算周长的方法
print("The area of the circle is ",area)
print("The perimeter of the circle is ",perimeter)
定义学生类录入5个学生信息并存储到列表中

在这里插入图片描述
在这里插入图片描述

class Student:def __init__(self, name, age,gender,score):self.name = nameself.age = ageself.gender = genderself.score = score# 实例对象:def info(self):print(self.name, self.age, self.gender, self.score)print('请输入五位学生信息:(姓名#年龄#性别#成绩')
lst=[] # 用于存储5个学生对象
for i in range(1,6):s=input(f'请输入第{i}位学生信息及成绩')s_lst=s.split('#')# 索引为0的是姓名,索引为1的是年龄,索引为2的是性别,索引为3的是成绩# 创建学生对象stu=Student(s_lst[0],s_lst[1],s_lst[2],s_lst[3])# 将学生对象添加到列表当中lst.append(stu)# 遍历列表,调用学生对象的info方法
for item in lst: # item的数据类型是Student类型item.info() # 对象名.方法名()

在这里插入图片描述

方法重写以及多态
class Instrument(): # 父类def make_sound(self):passclass Erhu(Instrument):def make_sound(self):print("Erhu在弹奏")class Pinao(Instrument):def make_sound(self):print('钢琴在弹奏')class Violin(Instrument):def make_sound(self):print('小提琴在弹奏')# 编写一个函数:
def play(obj):obj.make_sound()# 调试
er = Erhu()
pinao = Pinao()
vio = Violin()#调用方法
play(er)
play(pinao)
play(vio)
使用面相对象思想编写出租车和家用轿车

在这里插入图片描述
在这里插入图片描述

class Car:def __init__(self, type, no):self.type = typeself.no = nodef start(self):print('我是车,我能启动')def stop(self):print('我是车,我可以停止')# 出租车
class Taxi(Car):def __init__(self,type,no,company):super().__init__(type,no)self.company = company# 重写父类的启动和停止的方法def start(self):print('乘客您好')print(f'我是{self.company}出租车公司,我的车牌是:{self.no},您要去哪里')def stop(self):print('目的地到了,请您扫码')class FamilyCar(Car):def __init__(self,type,no,name):super().__init__(type,no)self.name = namedef start(self):print(f'我是{self.name},我的轿车我做主')def stop(self):print('目的地到了')# 测试
taix=Taxi('上海大众','京B6666','长城')
taix.start()
taix.stop()print('-'*40)
family_car=FamilyCar('广汽丰田','京A666','武大郎')
taix.start()
taix.stop()

二.模块及常用的第三方模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

name='张三'def info():print(f'大家好,我叫{name}')

2.2 模块的导入

name='hh'
age=19
def info():print(f'姓名{name},年龄:{age}')
name='张三'def info():print(f'大家好,我叫{name}')
import project1
print(project1.info())
project1.info()import project1 as a
print(a.name)
project1.info()# 2.from...import
from project1 import name # 导入的是具体变量的名称
print(name)
# info
project1.info()from project1 import info#导入的是一个具体的函数的名称
info()# 通配符
from project1 import *
print(name)
info()# 同时导入多个模块
import math,time,random
from project1 import *
from introduce import *
# 导入模块中具有同名的变量和函数,后导入的会将之前导入的进行覆盖
info()# 如果不想覆盖,解决方案,可以使用import
import project1
import introduce
# 使用模块中的函数或变量时,模块名打点调用
project1.info()
introduce.info()

2.3 Python中的包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import admin.my_admin as a # 包名,模块名admin是包名,my_admin是模块名
a.info()# 当包被导入时,init文件被自动导入print('-'*40)
from admin import my_admin as b #from 包名 import模块 as 别名
b.info()# 导入指定函数和变量
from admin.my_admin import info # from 包名,模块名 import 函数/变量等
info()from admin.my_admin import * #包名.模块名 import *
print(name)

在这里插入图片描述

# 导入的代码
import module_a
if __name__ == '__main__':print('Welcome to Beijing')name = 'hh'print(name)

在这里插入图片描述
在这里插入图片描述

2.4 Python中常用的内置模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 导入
import random
# 设置随机种子
random.seed(10)
print(random.random()) # (0.0,1.0)不包含1
print(random.random())
print('-'*40)
print(random.randint(1,100)) # [1,100]for i in range(10):# 含有m不含n,步长为k,m--->start-->1,n-->stop-->10,k->step-->print(random.randrange(1,10,3))# 11行执行了10次lst=[i for i in range(1,11)] #[a,b]随机小数
print(random.choice(lst)) # lst是列表,称为序列
# 随机排序
random.shuffle(lst)
print(lst)random.shuffle(lst) 
print(lst)

2.5 time模块中常用的函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import time
now = time.time()
print(now)obj=time.localtime()#struct_time对象
print(obj)obj2=time.localtime(60) # 60秒  1970年1月1日
print(obj2)
print(type(obj2))
print('年份:',obj2.tm_year)
print('月份:',obj2.tm_mon)
print('日期:',obj2.tm_mday)
print('时:',obj2.tm_hour)
print('秒:',obj2.tm_min)
print('秒:',obj2.tm_sec)
print('星期:',obj2.tm_wday)
print('今年的多少天:',obj2.tm_yday)
print(time.ctime())# 时间戳容易读的字符串# 日期时间格视化
print(time.strftime('%Y-%m-%d %H-%M-%S',time.localtime()))# str---字符串f--time时间
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
print('%B月份的名称:',time.strftime('%B',time.localtime()))
print('%A星期的名称',time.strftime('%A',time.localtime()))# 字符串转成struct_time
print(time.strftime('2008-08-08','%Y-%m-%d'))time.sleep(20)
print('helloworld')

2.6 datatime类

在这里插入图片描述

from datetime import datetime # 从datetime模块中导入datetime类
dt = datetime.now()
print('当前的系统时间为:',dt)# datetime是一个类,手动创建这个类的对象
dt2 = datetime(2028,8,8,20,8)
print('dt2的数据类型',type(dt2),'dt2表示的日期时间:',dt2)
print('年:',dt2.year,'月:',dt2.month,'日:',dt2.day)
print('时:',dt2.hour,'分:',dt2.month,'秒:',dt2.second)# 比较两个datatime类型对象的大小
labor_day=datetime(2028,5,1,0,0,0)
national_day=datetime(2028,10,1,0,0,0)print('2028年5月1日比2028年10月1日早吗',labor_day<national_day)# datetime类型与字符串类型转换
nowdt=datetime.now()
nowdt_str=nowdt.strftime('%Y/%m/%d %H:%M:%S')
print('nowdt的数据类型',type(nowdt),'nowdt所表示的数据是什么',nowdt)
print('nowdt_str的数据类型',type(nowdt_str),'nowdt_str所表示的数据是什么',nowdt_str)# 将字符串类型转成datetime类型
str_datetime='2028年8月8日8点8分'
dt3=datetime.strptime(str_datetime,'%Y年%m月%d日 %H点%M分')
print('str_datetime的数据类型:',type(str_datetime),'str_datetime所表示的数据',str_datetime)
print('dt3的数据类型:',type(dt3),'dt3所表示的数据',dt3)
from datetime import datetime
from datetime import timedelta
# 创建两个datetime类型的对象
deltal=datetime(2028,10,1)-datetime(2028,5,1)
print('deltal的数据类型是:',type(deltal),"deltal表示的数据",deltal)
print('2028年5月1日之后153是:',datetime(2028,5,1)+deltal)# 通过传入参数的方式创建一个timedelta对象
td1=timedelta(10)
print('创建一个10天的timedelta对象',td1)
td2=timedelta(10,11)
print('创建一个10天11秒的timedelta对象',td2)

在这里插入图片描述

2.7 第三方模块的安装或卸载

在这里插入图片描述
在这里插入图片描述

2.8 requests模块的应用

在这里插入图片描述

2.9 爬取景区的天气预报
import reimport requests
url=requests.get("https://www.msn.cn/zh-cn/weather/forecast/in-%E5%8C%97%E4%BA%AC%E5%B8%82,%E4%B8%9C%E5%9F%8E%E5%8C%BA?ocid=ansmsnweather&loc=eyJsIjoi5Lic5Z%2BO5Yy6IiwiciI6IuWMl%2BS6rOW4giIsImMiOiLkuK3ljY7kurrmsJHlhbHlkozlm70iLCJpIjoiQ04iLCJnIjoiemgtY24iLCJ4IjoiMTE2LjM5OCIsInkiOiIzOS45MDgifQ%3D%3D&weadegreetype=C")resp=requests.get(url.url)# 打开浏览器并打开网址
# 设置一个编码格式
resp.encoding='utf-8'
print(resp.text) # resp响应对象, 对象名,属性名 resp.text# 从一堆字符串提取想要的数据,需要使用正则表达式
city= re.findall('<span>(.*?)</span>',resp.text)[0]
print(city) 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 Openpyxl模块的使用

在这里插入图片描述

将weather封装到函数中

在这里插入图片描述
在这里插入图片描述

两个函数分别是发送函数请求结果,将数据结果进行数据解析,
将爬取的数据存取到excel中
import weather
import openpyxl
html=weather.get_html()# 发请求,得响应结果
lst=weather.get_html(html)# 解析数据
# 创建一个新的Excel工作簿
workbook=openpyxl.Workbook()#创建对象
# 在excel文件中创建工作表
sheet=workbook.create_sheet('景区天气')
#向工作表中添加数据
for item in lst:sheet.append(item)# 一次添加一行workbook.save('景区天气.xlsx')
从Excel文件中读取数据
import openpyxl
# 打开工作簿
workbook=openpyxl.load_workbook('景区天气.xlsx')
# 选择要操作的工作表
sheet=workbook['景区天气']
# 表格数据是二维列表,先遍历的是行,后遍历的是列
lst=[]#存储的是行数据
for row in sheet.iter_rows():sublst=[]#存储单元格数量for cell in row:# cell单元格lst.append(cell.value)lst.append(sublst)for item in lst:print(item)

3.2 常用第三方模块

在这里插入图片描述

3.3 pdfplumber模块

import pdfplumber
#打开PDF文件
with pdfplumber.open('小学数学-公示.pdf') as pdf:for i in pdf:# 遍历页print(i.extract_text())#extract_text()方法提取内容print(f'---------第{i.page_num}页结束')

3.4 Numpy模块

import numpy as np
import matplotlib.pyplot as plt
# 读取图片
nl=plt.imread('google.jpg')
print(type(nl),nl)# 数组,三维数组,最高维度表示的是图像的高,次高维度是图像的宽,最低维[R,G,B]颜色
plt.imshow(nl)# 编写一个灰度的公示
n2=np.array([0.299,0.587,0.114])# 创建数组
# 将数组 n1(RGB)颜色与数组n2(灰度公式固定值),进行点乘运算
x=np.dot(nl,n2)
# 传入数组,显示灰度
plt.imshow(x,cmap='gray')

3.5 pandas与matplotlib模块的使用

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sipbuild.generator.parser.rules import start# 读取Excel文件
df=pd.read_csv('JD手机销售数据.xlsx')
#print(df)
# 解决中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
# 设置画布的大小
plt.figure(figsize=[10,6])
labels=df['商品名称']
y=df['北京出库量']
#print(labels)
#print(y)# 绘制饼图
plt.plot(y,labels=labels,autopct='%1.1f%%',startangle=90)#设置x,y轴刻度
plt.axis('equal')
plt.title('2028年1月北京个手机品牌出库量占比')
plt.show()

3.6 PyEcharts模块的使用

在这里插入图片描述
在这里插入图片描述

3.7 PIL 图像的交换

from PIL import Image
# 加载图片
im=Image.open('google.jpg')
# print(type(im),im)
# 提取RGB颜色通道,返回结果图像的剧本
r,g,b=im.split()
print(r,g,b)
#合并通道
om=Image.merge('RGB',(r,g,b))
om.save('new_google.jpg')

3.8 jieba模块实现中文分词

import jieba
# 读出来
with open('华为笔记本.txt', 'r', encoding='utf-8') as file:s=file.read()
# 分词
lst=jieba.cut(s)
#print(lst)#去重操作
set1=set(lst) # 使用集合实现去重
d={} #key:词,value:出现次数
for item in set1:if len(item)>=2:d[item]=item
#print(d),遍历
for item in set1:if item in d:d[item]=d.get(item)+1
print(d)new_lst=[]
for item in set1:new_lst.append(item,d[item])
print(new_lst)# 列表排序
new_lst.sort(key=lambda x:x[1],reverse=True)
print(new_lst[0:11])# 显示的是前十项

3.9 第三方模块

在这里插入图片描述

本章总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.文件及IO操作

在这里插入图片描述
在这里插入图片描述

def my_write():#1.创建(打开)文件file=open('a.txt','w',encoding='utf-8')#2.操作文件file.write('伟大的中国梦')#3.关闭file.close()# 读取
def my_read():# 1.创建(打开)文件file=open('a.txt','r',encoding='utf-8')# 2.操作文件s=file.read()print(type(s),s)# 3.关闭文件file.close()# 主程序
if __name__=='__main__':#my_write() 调用函数my_read()
4.1 文件的写入操作

在这里插入图片描述
在这里插入图片描述

def my_write(s):# 1.打开(创建)文件file=open("b.txt",'a','utf-8')# 2.写入内容file.write(s)file.write("\n")# 3.关闭file.close()def my_write_list(file,lst):#1.打开文件f=open(file,'a','utf-8')# 2.操作文件f.writeline(lst)#3.关闭f.close()if __name__=='__main__':# my_write('伟大的中国梦')# my_write('北京欢迎你')# 准备数据lst=['姓名\t','年龄\t','成绩\n','张三\t','98']

4.2 文件的读取操作及文件复制

4.2.1 文件的读取操作
from fileinput import filenamedef my_write(s):# 1.打开(创建)文件file=open(filename,'w+',encoding='utf-8')# 2.操作file.write('你好') # 写入完成,文件的指针在最后# seek 修改文件指针的位置file.seek(0)# 读取# s=file.read() #读取全部# s=file.read(2) 你好 2是指两个字符# s=file.readline() 读取一行数据# s=file.readline(2) 读取一行数据的2个字符s=file.readlines() #读取所有,一行为列表中的一个元素,s是列表类型#读取“好啊”file.seek(3)# 3个字节,一个中文占3个字节,utf-8s=file.read() #读取全部print(type(s),s)# 3.关闭file.close()
if __name__=='__main__':
4.2.1 文件复制
def copy(scr,new_path):# 文件的复制就是边读边写file1=open(src,'rb')# 1.打开源文件file2=open(new_path,'wb')# 2.打开目标文件file2.write(file1.read())# 3.开始复制,边读边写s=file2.read()# 源文件读取所有file2.close()# 向目标文件写入所有#4.关闭file2.close()file1.close() # 先打开的后关,后打开的先关if __name__=='__main__':src='./google.jpg' #.代表的是当前目录new_path='../chap2/copy_google.jpg' #..表示上级目录,相当于windows后退copy(src,new_path)print('文件复制完毕')

4.3 with语句的使用

在这里插入图片描述

一.数据的分析介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. matplotlib的基础画图:将数据可视化

axis轴指的是x或y这种坐标轴

在这里插入图片描述

from matplotlib import pyplot as plt
x=range(2,26,2)
y=range(2,26,2)
#绘图
plt.plot(x,y)
# 展示图形
plt.show()

在这里插入图片描述

2. matplotlib的基础画图

在这里插入图片描述

from matplotlib import pyplot as plt
x=range(2,26,2)
y=[15,13,12,11,10,9,8,7,22,24,25,26]
# 设置图片大小
plt.figure(figsize=(20,8),dpi=80)
#绘图
plt.plot(x,y)
# 保存
plt.savefig('./t1.png')
# 展示图形
plt.show()

在这里插入图片描述

from matplotlib import pyplot as plt
x=range(2,26,2)
y=[15,13,12,11,10,9,8,7,22,24,25,26]
# 设置图片大小
plt.figure(figsize=(20,8),dpi=80)
#绘图
plt.plot(x,y)#设置x轴的刻度
_xtick_labels=[i/2 for i in range(2,49)]
plt.xticks(_xtick_labels)
plt.yticks(range(min(y),max(y)+1))
# 保存
plt.savefig('./t1.png')
# 展示图形
plt.show()

3. 调整X或者Y轴上的刻度,显示字符串,并显示中文

在这里插入图片描述

# coding=utf-8
from matplotlib import pyplot as plt
import randomx= range(0,120)
y= [random.randint(20,35) for i in range(120)]plt.plot(x,y)#调整x轴的刻度
_x=x
_xtick_labels=["hello,{}".format(i) for i in _x]
plt.xticks(_x,_xtick_labels)
plt.show()

在这里插入图片描述

使字符串对应
# coding=utf-8
from matplotlib import pyplot as plt
import randomx= range(0,120)
y= [random.randint(20,35) for i in range(120)]plt.plot(x,y)#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=90)# 取步长,数字与字符串一一对应,数据的长度一样,只有列表能够取步长
# rotation旋转90度
plt.show()

在这里插入图片描述

在这里插入图片描述

# coding=utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
#matplotlib.rc
#from matplotlib.backends.backend_qt5 import NavigationToolbar2QT
# font = {'family': 'monospace',
#         'weight': 'bold',
#         'size': 'larger'}
x= range(0,120)
y= [random.randint(20,35) for i in range(120)]plt.plot(x,y)#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=90)# 取步长,数字与字符串一一对应,数据的长度一样,只有列表能够取步长
# rotation旋转90度
plt.show()

在这里插入图片描述
在这里插入图片描述

# coding=utf-8
from matplotlib import pyplot as plt, font_manager
import random
import matplotlib
#matplotlib.rc
#from matplotlib.backends.backend_qt5 import NavigationToolbar2QT
# font = {'family': 'monospace',
#         'weight': 'bold',
#         'size': 'larger'}# 另一种字体方式,实例化font_manager
my_font = font_manager.FontProperties(fname="",)# 系统中的字体大小x= range(0,120)
y= [random.randint(20,35) for i in range(120)]plt.plot(x,y)#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=90,fontproperties=my_font)# 取步长,数字与字符串一一对应,数据的长度一样,只有列表能够取步长
# rotation旋转90度
plt.show()

4. 添加描述信息

# coding=utf-8
from matplotlib import pyplot as plt, font_manager
import random
import matplotlib
#matplotlib.rc
#from matplotlib.backends.backend_qt5 import NavigationToolbar2QT
# font = {'family': 'monospace',
#         'weight': 'bold',
#         'size': 'larger'}# 另一种字体方式,实例化font_manager
my_font = font_manager.FontProperties(fname="",)# 系统中的字体大小x= range(0,120)
y= [random.randint(20,35) for i in range(120)]plt.plot(x,y)#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=90,fontproperties=my_font)# 取步长,数字与字符串一一对应,数据的长度一样,只有列表能够取步长
# rotation旋转90度
plt.show()# 添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(C)",fontproperties=my_font)
plt.title("10点12点每分钟气温变化情况")plt.show()

5. mat绘制多次图像

# coding=utf-8
from matplotlib import pyplot as plt, font_manager
import randommy_font=font_manager.FontProperties("")
x=range(11,30)
y=range[1,0,1,1,2,4,3,2,2,4,5,3,1,1,2,3]# 设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)# 设置x轴刻度
_xtick_labels=["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels,fontproperties=my_font)#绘制网格
plt.grid()
# 展示
plt.show()

在这里插入图片描述
在这里插入图片描述

# coding=utf-8
from matplotlib import pyplot as plt, font_manager
import randomfrom matplotlib.lines import lineStylesmy_font=font_manager.FontProperties("")
x=range(11,30)
y_1=[1,0,1,1,2,4,3,2,2,4,5,3,1,1,2,3]
y_2=[1,0,2,2,0,0,1,2,1,3,2,1,0,0,0,0]# 设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y_1,label='自己',lineStyle=':')# 设置label参数
plt.plot(x,y_2,label='同桌',linestyle='-.')# 设置x轴刻度
_xtick_labels=["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels,fontproperties=my_font)#绘制网格
plt.grid(alpha=0.3)#添加图例
plt.legend(prop=my_font,loc='upper left')# 图例在左上角
# 展示
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1绘制散点图

# coding=utf-8
from matplotlib import pyplot as plt, font_manager
from matplotlib.font_manager import fontManagery_3 =[11,23,15,17,18]
y_10=[26,25,24,27,22]x_3=range(1,6)
x_10=range(1,6)# 设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)# 调整x轴的刻度
_x=list(x_3)+list(x_10)
_xtick_labels=["3月{}日".format(i) for i in x_3]
_xtick_labels+=["10月{}日".format(i-50) for i in x_10]
plt.xticks(x_3,_xtick_labels)
#展示
plt.show()

在这里插入图片描述
在这里插入图片描述

6.2 绘制条形图

在这里插入图片描述

from matplotlib import pyplot as plt
from matplotlib.figure import Figure
from matplotlib.font_manager import FontPropertiesa=["星球崛起:终极之战","尔克","蜘蛛侠:英雄归来","战狼"]
b_16=[15555,322,2222,111]
b_15=[12345,156,2045,168]
b_14=[2343,333,2455,234]bar_width=0.5
x_14=list(range(0,len(a)))
x_15=[i*bar_width for i in x_14]
x_16=[i*bar_width*2 for i in x_14]# 设置图形大小
plt.figure(figsize=(12,8),dpi=80)
plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,bar_width,label="9月15日")
plt.bar(x_16,b_16,bar_width,label="9月16日")#设置图例
plt.legend(prop={'size':10})
# 设置x轴刻度
plt.xticks(x_15,a)
plt.show()
字体中文未设置

在这里插入图片描述
在这里插入图片描述

组数=极差/组距
将其分为20组

在这里插入图片描述

7 numpy学习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1 numpy数组的创建
# coding=utf-8
import numpy as np
# 使用numpy生成数组
t1=np.array([1,2,3,])
print(t1)
print(type(t1))t2= np.array(range(10))
print(t2)t3=np.arange(4,10,2)
print(t3)
print(t3.dtype)t4=np.array(range(1,4),dtype="i1")
print(t4)
print(t4.dtype)# numpy中的bool类型
t5=np.array([1,1,0,1,0,0],dtype=bool)
print(t5.dtype)# 调整数据类型
t6= t5.astype("int8")
print(t6)
print(t6.dtype)

在这里插入图片描述
在这里插入图片描述

# coding=utf-8
import  random
import numpy as np
# 使用numpy生成数组
t1=np.array([1,2,3,])
print(t1)
print(type(t1))t2= np.array(range(10))
print(t2)t3=np.arange(4,10,2)
print(t3)
print(t3.dtype)t4=np.array(range(1,4),dtype="i1")
print(t4)
print(t4.dtype)# numpy中的bool类型
t5=np.array([1,1,0,1,0,0],dtype=bool)
print(t5.dtype)# 调整数据类型
t6= t5.astype("int8")
print(t6)
print(t6.dtype)t7=np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
t8=np.round(t7,2)
print(t8)

在这里插入图片描述

7.2 数组的计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果不是相同的形状的数组也可以运算

在这里插入图片描述
在这里插入图片描述

3块三行三列的三维和一个二维无法计算
在某一方向相同即可进行计算

7.2 numpy读取本地数据

在这里插入图片描述

元组的第一个位置是0轴,第二个值是1轴

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

unpack转置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.3 numpy索引

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

取交叉位置

在这里插入图片描述

[0,0],[2,1],[2,3]

在这里插入图片描述

7.3 numpy索引方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

clip大于小于没有影响

在这里插入图片描述

nan是浮点型,要替换成int类型在这里插入图片描述

7.4 数组的索引

竖直分隔:画横线

在这里插入图片描述

交换数据的行列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import numpy as npus_data=" "
uk_data=" "
# 加载国家数据
us_data=np.loadtxt(us_data,delimiter=",",dtype=float)
uk_data=np.loadtxt(uk_data,delimiter=",",dtype=float)# 添加国家信息
# 构造全为0的数据
zero_data=np.zeros((us_data.shape[0],1)).astype(int)#转换为int类型
ones_data=np.ones((us_data.shape[0],1)).astype(int)#分别添加一列0和1的数组
np.hstack((us_data,zero_data))#水平拼接
np.hstack((uk_data,ones_data))
#拼接两组数据
np.vstack((us_data,ones_data))
uk_data=np.hstack((us_data,ones_data))#拼接两组数据
final_data=np.vstack((us_data,uk_data))
print(final_data)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标准正态分布中心线在y轴,所以平均数为0

在这里插入图片描述

import numpy as np
np.random.seed(10)
t=np.random.randint((0,20,(3,4)))
print(t)

在这里插入图片描述

1、2相当于浅拷贝,如果啊a,b要不影响就要用copy(相当于深拷贝)

7.5 numpy中的nan和inf

在这里插入图片描述

nan,inf是浮点类型,nan表示不是数字的东西

在这里插入图片描述

7.6 numpy中统计

在这里插入图片描述

0是每一行对应列相加的行的结果,计算的是列的结果,和列的形状一样

在这里插入图片描述
在这里插入图片描述

mean是中值的意思

在这里插入图片描述
在这里插入图片描述

标准差比较大数据不稳定

7.7 numpy中nan和常用方法

导入不能以数字为开头
import numpy as npt1=np.arange(12).reshape(2,3).astype("float")
t1[1,2:]=np.nan
#print(t1)
def fill_ndarray(t1):for i in range(t1.shape[1]):  # 遍历每一列temp_col = t1[:, i]  # 当前的每一列nan_num = np.count_nonzero(temp_col != temp_col)  # 统计nan的个数if nan_num != 0:temp_not_nan_col = temp_col[temp_col != temp_col]  # 当前一列不为nan的arraytemp_not_nan_col.mean()# 选中当前nan的位置,把值赋值给不为nan的均值temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()return t1if __name__ == "__main__":# 调用t1 = np.arange(12).reshape(2,3).astype("float")t1[1,2:]=np.nanprint(t1)t1=fill_ndarray(t1)print(t1)

在这里插入图片描述

索引选一个值,切片选一部分

在这里插入图片描述

pandas的series

在这里插入图片描述

Series一维,带标签的数组。DataFrame二维,Series容器

在这里插入图片描述

import pandas as pdprint(pd.Series([1,2,32,12,3,4]))
t2=pd.Series([1,2,4,5,6],index=list("abcde"))
print(t2)temp_dict={"name":"zhangsan","age":30,"tel":10086}
t3=pd.Series(temp_dict)
print(t3)
t2.astype(float)
print(t2)

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SSM-SpringMVC(二)】Spring接入Web环境!本篇开始研究SpringMVC的使用!SpringMVC数据响应和获取请求数据

SpringMVC的数据响应方式 页面跳转 直接返回字符串通过ModelAndView对象返回 回写数据 直接返回字符串返回对象或集合 页面跳转&#xff1a; 返回字符串方式 直接返回字符串&#xff1a;此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转 RequestMapping("/con&…

阅文集团C++面试题及参考答案

目录 能否不使用锁保证多线程安全? 面向对象的三个特性是什么?请分别解释。 构造函数和析构函数能否被继承? C++ 中函数重载是如何实现的? C 语言中是否支持函数重载? 什么是左值和右值?请举例说明。 C++ 中子类的构造和析构顺序是怎样的? C++ 中虚函数表的变化过…

【亲测有效】如何清空但不删除GitHub仓库中的所有文件(main分支)

如何清空但不删除GitHub仓库中的所有文件&#xff08;main分支&#xff09; 在项目开发过程中&#xff0c;有时我们需要清空GitHub仓库中的所有文件&#xff0c;同时保留仓库本身。这种情况常见于项目重构、代码重写或者需要重新开始一个项目时。本文将介绍一种有效的方法来清…

前端EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载

本次更新是底层全部重构&#xff0c;按照现代浏览器要求&#xff0c;采用canvas方式进行了重构&#xff0c;预留了将来扩展空间&#xff0c;特别是在大数据量性能提升方面有了较大提升&#xff0c;可以满足千万级单元格加载&#xff0c;欢迎大家体验使用。 体验地址&#xff1…

3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】

一、引言 3D高斯泼溅(3DGS)是一种新兴的三维场景表示方法&#xff0c;可以生成高质量的场景重建结果。然而&#xff0c;要查看这些重建场景&#xff0c;需要特殊的高斯渲染器。大多数3D处理软件并不兼容3D高斯分布模型&#xff0c;但它们通常都兼容点云文件。 3DGS-to-PC项目提…

OpenHarmony 以太网卡热插拔事件接口无效

目录 1.背景 2.解决方案 1.背景 在OpenHarmony中调用以太网热插拔时间,发现热插拔没有任何回调,如下接口 import { ethernet } from @kit.NetworkKit;ethernet.on(interfaceStateChange, (data: object) => {console.log(on interfaceSharingStateChange: + JSON.…

C++ 跨平台开发挑战与深度解决方案:从架构设计到实战优化

C 凭借其高性能与底层控制能力&#xff0c;在游戏引擎、嵌入式系统、工业软件等领域占据核心地位。然而&#xff0c;跨平台开发过程中需应对硬件架构多样性、操作系统差异性、编译工具链碎片化等复杂问题。本文将从底层架构到上层应用&#xff0c;系统性剖析 C 跨平台开发的核心…

什么是 ANR 如何避免它

一、什么是 ANR&#xff1f; ANR&#xff08;Application Not Responding&#xff09; 是 Android 系统在应用程序主线程&#xff08;UI 线程&#xff09;被阻塞超过一定时间后触发的错误机制。此时系统会弹出一个对话框提示用户“应用无响应”&#xff0c;用户可以选择等待或强…

数据结构(六)——树和二叉树

一、树和二叉树的定义与存储 1.树的定义 树是一种非线性的数据结构&#xff0c;它是由n个有限结点组成有层次关系的集合 树具有以下特点&#xff1a; &#xff08;1&#xff09;每个结点具有0个或多个子结点 &#xff08;2&#xff09;每个子结点只有一个父结点 &#xff…

DICOM 网络服务实现:医学影像传输与管理的技术实践

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

TongWeb7.0常用-D参数说明

Web容器相关启动参数配置 属性 含义 -Dtongweb.restart.interval 设置宕机后重启的时间间隔&#xff0c;以秒为单位。如果不设置这个参数&#xff0c;默认为1秒 -Dmonitor.abnormal.restart 设置服务器非正常状态时是否重启&#xff0c;如果不设置这个参数或者参数值不为…

软件架构评估方法全面解析

介绍 在软件开发过程中&#xff0c;架构设计的好坏直接影响系统的可维护性、可扩展性和性能。因此&#xff0c;软件架构评估&#xff08;Software Architecture Evaluation&#xff09;成为确保架构质量的关键步骤。本文将介绍几种主流的架构评估方法&#xff0c;包括ATAM、SA…

我开源了一个免费在线工具!UIED Tools

UIED Tools - 免费在线工具集合 最近更新&#xff1a;修改了文档说明&#xff0c;优化了项目结构介绍 这是设计师转开发的第一个开源项目&#xff0c;bug和代码规范可能有些欠缺。 这是一个功能丰富的免费在线工具集合网站&#xff0c;集成了多种实用工具&#xff0c;包括 AI …

【vue】全局组件及组件模块抽离

一、全局组件 只要是实例化过的区域都可以使用 Vue.component("组件名",{ template: 内容} ) 二、组件模块抽离 抽离就是把template的内容写到body里面&#xff0c;然后建立id写到变量下的template里&#xff0c;id变量写到component里 body{ template&#xff1a; …

深入理解 iOS 开发中的 `use_frameworks!`

在使用 CocoaPods 管理 iOS 项目依赖时&#xff0c;开发者经常会在 Podfile 文件中看到一个配置选项&#xff1a;use_frameworks!。本文将详细介绍这个配置选项的含义&#xff0c;以及如何决定是否在项目中使用它。 一、什么是 use_frameworks! 在 CocoaPods 中引入第三方库时…

《Python星球日记》 第57天:LSTM 与 GRU

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、LSTM 的门控机制1. LSTM 结构概述2. 遗忘门(Forget Gate)3. 输入门(Input Gate)4. 输出门(Output Gate)5. 记忆单元更新过程二、GRU 的简化…

Java SE所需工具与常见类型和运算符介绍

1.Java SE所需工具 1.1 JDK JDK全称为Java Develepment Kit(Java开发者工具包&#xff09;&#xff0c;包括了Java运行环境JRE&#xff08;Java Runtime Envirnment&#xff09;、一堆Java工具&#xff08;javac/java/jdb等&#xff09;和Java基础的类库&#xff08;即Java A…

QT6.8安装教程

官网下载 链接&#xff1a; Index of /official_releases/online_installers 这个比较慢 建议去 清华大学开源软件镜像站&#xff1a;Index of /qt/archive/online_installers/4.9/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 根据自己什么系统选择 点击打开…

MIT XV6 - 1.3 Lab: Xv6 and Unix utilities - primes

接上文 MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong primes 继续实验&#xff0c;实验介绍和要求如下 (原文链接 译文链接) : Write a concurrent prime sieve program for xv6 using pipes and the design illustrated in the picture halfway down this page and…

hive两个表不同数据类型字段关联引发的数据倾斜

不同数据类型引发的Hive数据倾斜解决方案 #### 一、‌原因分析‌ 当两个表的关联字段存在数据类型不一致时&#xff08;如int vs string、bigint vs decimal&#xff09;&#xff0c;Hive会触发隐式类型转换引发以下问题&#xff1a; ‌Key值的精度损失‌&#xff1a;若关联字…