IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python复杂操作 -> 正文阅读

[Python知识库]Python复杂操作

类 Class

定义类

  • __init()__定义构造函数,与其他面向对象语言不同的是,Python语言中,会明确地把代表自身实例的self作为第一个参数传入
  • 创建一个实例化对象,init()方法接收参数
  • 使用点号.来访问对象的属性
class Animal:
    def __init__(self,name):
        self.name = name
        print('动物名称实例化')
    def eat(self):
        print(self.name + '要吃东西啦!')
    def drink(self):
        print(self.name + '要喝水啦!')
        
cat = Animal('miaomiao')
print(cat.name)
cat.eat()
cat.drink()

## 输出
# 动物名称实例化
# miaomiao
# miaomiao要吃东西啦!
# miaomiao要喝水啦!

继承

通过继承创建的新类称为子类或派生类

被继承的类被称为基类、父类或超类

class Person:
    def __init__(self,name):
        self.name = name
        print('调用父类构造函数')
        
    def eat(self):
        print('调用父类方法')
        
class Student(Person):	# 定义子类
    def __init__(self):
        print('调用子类构造方法')
        
    def study(self):
        print('调用子类方法')
        
    s = Student()
    s.study()
    s.eat()
 
# 调用子类构造方法
# 调用子类方法
# 调用父类方法

JSON序列化与反序列化

JSON序列化

json.dumps用于将Python对象编码成JSON字符串

import json
data = [ {'b':2, 'd':4, 'a':1, 'c':3, 'e':5} ]
# json = json.dumps(data)
# print(json)
json_format = json.dumps(data, sort_keys=True, indent=4, separators=(',',': '))
print(json_format)

JSON反序列化

json.loads用于解码JSON数据。该函数返回Python字段的数据类型

import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
text = json.loads(jsonData)
print(text)

Pandas库

  • Pandas提供高性能易用数据类型和分析工具
  • Pandas基于Numpy实现,常与Numpy和matplotlib一同使用
  • Pandas中有两大核心数据结构:Series(一维数据,为”键值对形式“。区别于字典,键可以重复)和DataFrame(多特征数据,既有行索引,又有列索引)

Pandas中文网:https://pypandas.cn/

Series

  • series是一种类似与一维数组的对象,它由一维数组(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成
  • series创建:使用Python数组、Numpy数组、Python字典创建。
  • 与字典不同的:Series允许索引重复。
import pandas as pd
import numpy as np
pd.Series([11,12], index=["北京","上海"])

pd.Series(np.arange(3,6))

pd.Series({"北京":11,"上海":12, "深圳":14})
  • series字符串表现形式为:索引在左边,值在右边
  • 如果没有为数据指定索引,则自动创建一个0到N-1(N为数据的长度)的整数型索引
  • 可以通过Series的values和index属性获取其数组表现形式和索引对象
  • 与普通Numpy数组相比,可以通过索引的方式选取Series中的单个或一组值
obj = pd.Series([4,7,-5,3])
obj.values	# array([ 4,  7, -5,  3], dtype=int64)
obj.index	# RangeIndex(start=0, stop=4, step=1)
obj[2]	# -5
obj[1] = 8
obj[[0,1,3]]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n0VV5hdY-1647074628094)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163832748.png)]

  • 在算术运算中自动对齐不同索引的数据
obj2 = pd.Series({"Ohio":35000,"Oregon":16000,"Texas":71000,"Utah":5000})
obj3 = pd.Series({"California":np.nan,"Ohio":35000,"Oregon":16000,"Texas":71000})

obj2 + obj3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lA0i6LDD-1647074628096)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163655127.png)]

DataFrame

  • DataFrame是一个表格型的数据结构,它含有一组有序的列。每列可以是不同的值类型(数值、字符串、布尔值等)

  • DataFrame既有行索引也有列索引,它可以被看做有Series组成的字典(共用同一个索引)

  • 与其他类似的数据结构相比(例如R语言的data.frame),DataFrame面向行和面向列的操作基本上是平衡的。

  • 构成DataFrame的方法有很多,最常用的一种是直接传入一个由等长列表或Numpy数组组成的字典

  • DataFrame结果会自动加上索引(跟Series一样),且全部会被有序排列。

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(data)
frame

在这里插入图片描述

  • 如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列。
pd.DataFrame(data, columns=['year','state','pop'])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vzHo3PY-1647074628098)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163611531.png)]

  • 跟原Series一样,如果传入的列在数据中找不到,就会产生NAN值
frame2 = pd.DataFrame(data, columns=['year','state','pop','debt'], index=['one','two','three','four','five'])

在这里插入图片描述

  • 列可以通过赋值的方式进行修改。例如,给那个空的“delt”列附上一个标值量或一组值
frame2['debt'] = 16.5
frame2['debt'] = np.arange(5.)

在这里插入图片描述

  • 将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配
  • 如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有空位都将被填上缺失值
val = pd.Series([-1.2,-1.5,-1.7], index=['two','three','five'])
frame2['debt'] = val

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4dItJScX-1647074628101)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163424277.png)]

  • 为不存在的列赋值,会创建一个新列
frame2['eastern'] = frame2.state == 'Ohio'

在这里插入图片描述

  • 关键词del用于删除列
del frame2['eastern']
frame2.columns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRMcAiTk-1647074628103)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163343465.png)]

  • 将嵌套字典(也就是字典的字典)传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引
pop = {'Nevada':{2021:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
frame3 = pd.DataFrame(pop)

在这里插入图片描述

  • 也可以对上述结果进行转置
frame3.T

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAhuRqjs-1647074628105)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163239375.png)]

  • 如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来。
frame3.index.name = 'year'
frame3.columns.name = 'state'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBMCyIxN-1647074628106)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163224297.png)]

  • 跟Series一样,values属性也会以二维数组ndarray的形式返回DataFrame中的数据
frame3.values

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pJ24oh5-1647074628107)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163203045.png)]

  • 如果DataFrame各列的数据类型不同,则数组类型就会选用能兼容所有列的数据类型
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRJJBzox-1647074628109)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163114522.png)]

  • Pandas的索引对象负责管理轴标签和其他元数据(比如轴名称)

  • 构建DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index

  • Index对象时不可修改的

obj = pd.Series(range(3), index=['a','b','c'])
index = obj.index

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1h7Ofoh-1647074628109)(Python%E5%A4%8D%E6%9D%82%E6%93%8D%E4%BD%9C/images/image-20220312163002948.png)]

  • Pandas的每一个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引包含的数据的常见问题。
方法说明
append连接另一个Index对象,产生一个新的Index
diff计算差集,并得到一个Index
intersection计算交集
union计算并集
isin计算一个指示各值是否都包含在参数集合中的布尔型数组
delete删除索引处的元素,并得到新的Index
drop删除
insert将元素插入到索引处,并得到新的Index
is_monotonic当各元素均大于等于前一个元素时,返回True
is_unique当Index没有重复值时,返回True
unique计算Index中唯一值的数组
insert将元素插入到索引处,并得到新的Index
is_monotonic当各元素均大于等于前一个元素时,返回True
is_unique当Index没有重复值时,返回True
unique计算Index中唯一值的数组
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:28:05  更:2022-03-15 22:31:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:46:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码