5Python的Pandas:数据结构

Pandas是基于强大的NumPy库开发的,它继承了NumPy中的一些数据结构,也继承了NumPy的高效计算特性。

1.Python的数据类型

Python 提供了多种数据类型,用于存储和操作不同类型的数据。以下是一些主要的数据类型:

  1. 数值类型(Numeric Types)

    • 整数(int):用于表示整数。例如,x = 5
    • 浮点数(float):用于表示带有小数点的数字。例如,y = 3.14
    • 复数(complex):用于表示复数,例如,z = 1 + 2j
  2. 序列类型(Sequence Types)

    • 字符串(str):用于表示文本数据。例如,name = "Alice"
    • 列表(list):用于表示有序的可变集合。例如,fruits = ["apple", "banana", "cherry"]
    • 元组(tuple):用于表示有序的不可变集合。例如,coordinates = (10, 20)
  3. 集合类型(Set Types)

    • 集合(set):用于表示无序的唯一元素集合。例如,unique_numbers = {1, 2, 3}
    • 冰冻集合(frozenset):用于表示不可变的集合。例如,immutable_set = frozenset([1, 2, 3])
  4. 映射类型(Mapping Types)

    • 字典(dict):用于表示键值对集合。例如,person = {"name": "Alice", "age": 25}
  5. 布尔类型(Boolean Type)

    • 布尔(bool):用于表示真或假。例如,is_active = True
  6. 二进制类型(Binary Types)

    • 字节(bytes):用于表示二进制数据。例如,data = b"hello"
    • 字节数组(bytearray):用于表示可变的二进制数据。例如,mutable_data = bytearray(b"hello")
    • 内存视图(memoryview):用于在不复制数据的情况下操作二进制数据。例如,mview = memoryview(b"hello")

Python 还提供了一些内置函数来检查数据类型和转换数据类型,例如:

  • type():用于返回变量的数据类型。
  • isinstance():用于检查变量是否是特定类型的实例。
  • int()float()str() 等:用于类型转换。

以下是一些常见的 Python 数据类型的代码示例:

1.1.数值类型

# 整数
x = 5
print(f"x: {x}, type: {type(x)}")# 浮点数
y = 3.14
print(f"y: {y}, type: {type(y)}")# 复数
z = 1 + 2j
print(f"z: {z}, type: {type(z)}")

1.2.序列类型

# 字符串
name = "Alice"
print(f"name: {name}, type: {type(name)}")# 列表
fruits = ["apple", "banana", "cherry"]
print(f"fruits: {fruits}, type: {type(fruits)}")# 元组
coordinates = (10, 20)
print(f"coordinates: {coordinates}, type: {type(coordinates)}")

1.3.集合类型

# 集合
unique_numbers = {1, 2, 3}
print(f"unique_numbers: {unique_numbers}, type: {type(unique_numbers)}")# 冰冻集合
immutable_set = frozenset([1, 2, 3])
print(f"immutable_set: {immutable_set}, type: {type(immutable_set)}")

1.4.映射类型

# 字典
person = {"name": "Alice", "age": 25}
print(f"person: {person}, type: {type(person)}")

1.5.布尔类型

# 布尔
is_active = True
print(f"is_active: {is_active}, type: {type(is_active)}")

1.6.二进制类型

# 字节
data = b"hello"
print(f"data: {data}, type: {type(data)}")# 字节数组
mutable_data = bytearray(b"hello")
print(f"mutable_data: {mutable_data}, type: {type(mutable_data)}")# 内存视图
mview = memoryview(b"hello")
print(f"mview: {mview}, type: {type(mview)}")

1.7.类型检查和转换

# 类型检查
print(f"is x an int? {isinstance(x, int)}")
print(f"is name a str? {isinstance(name, str)}")# 类型转换
num_str = "123"
num = int(num_str)
print(f"num: {num}, type: {type(num)}")float_num = float(num_str)
print(f"float_num: {float_num}, type: {type(float_num)}")

2.Numpy

NumPy 是 Python 中一个强大的科学计算库,提供了支持大量维数组和矩阵运算的功能,还包括了大量的数学函数库。以下是一些使用 NumPy 进行操作的代码示例。

2.1. 导入 NumPy

import numpy as np

2.2.创建数组

# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(f"arr1: {arr1}, type: {type(arr1)}")# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(f"arr2: {arr2}, type: {type(arr2)}")# 使用 arange 和 reshape 创建数组
arr3 = np.arange(10).reshape(2, 5)
print(f"arr3:\n{arr3}")

2.3.基本操作

# 数组元素加减乘除
arr4 = arr1 + 10
print(f"arr1 + 10: {arr4}")arr5 = arr1 * 2
print(f"arr1 * 2: {arr5}")# 数组相加
arr6 = arr1 + arr1
print(f"arr1 + arr1: {arr6}")# 数组元素逐个相乘
arr7 = arr1 * arr1
print(f"arr1 * arr1: {arr7}")

2.4.数组索引和切片

# 一维数组索引
print(f"arr1[0]: {arr1[0]}")
print(f"arr1[-1]: {arr1[-1]}")# 二维数组索引
print(f"arr2[0, 1]: {arr2[0, 1]}")
print(f"arr2[1, -1]: {arr2[1, -1]}")# 切片
print(f"arr1[1:4]: {arr1[1:4]}")
print(f"arr2[:, 1]: {arr2[:, 1]}")

2.5.数学函数

# 求和
print(f"np.sum(arr1): {np.sum(arr1)}")
print(f"np.sum(arr2, axis=0): {np.sum(arr2, axis=0)}")
print(f"np.sum(arr2, axis=1): {np.sum(arr2, axis=1)}")# 平均值
print(f"np.mean(arr1): {np.mean(arr1)}")
print(f"np.mean(arr2, axis=0): {np.mean(arr2, axis=0)}")
print(f"np.mean(arr2, axis=1): {np.mean(arr2, axis=1)}")# 标准差
print(f"np.std(arr1): {np.std(arr1)}")
print(f"np.std(arr2, axis=0): {np.std(arr2, axis=0)}")
print(f"np.std(arr2, axis=1): {np.std(arr2, axis=1)}")

2.6.线性代数

# 矩阵乘法
arr8 = np.array([[1, 2], [3, 4]])
arr9 = np.array([[5, 6], [7, 8]])
result = np.dot(arr8, arr9)
print(f"np.dot(arr8, arr9):\n{result}")# 计算行列式
det = np.linalg.det(arr8)
print(f"np.linalg.det(arr8): {det}")# 逆矩阵
inv = np.linalg.inv(arr8)
print(f"np.linalg.inv(arr8):\n{inv}")

2.7.随机数生成

# 生成随机数
rand_arr = np.random.random((3, 3))
print(f"rand_arr:\n{rand_arr}")# 生成正态分布的随机数
normal_arr = np.random.normal(0, 1, (3, 3))
print(f"normal_arr:\n{normal_arr}")# 生成随机整数
randint_arr = np.random.randint(0, 10, (3, 3))
print(f"randint_arr:\n{randint_arr}")

通过这些示例,你可以看到如何使用 NumPy 进行数组创建、基本操作、索引和切片、数学函数、线性代数以及随机数生成。NumPy 提供了丰富的功能,可以大大简化科学计算和数据处理的工作。

3.Pandas的数据结构

Pandas 是一个强大的数据分析和操作库,提供了两种主要的数据结构:SeriesDataFrame。以下是对这两种数据结构的详细介绍和代码示例。

3.1.Series

Series 是一种类似于一维数组的对象,它由一组数据和与之相关的索引组成。它可以包含任何数据类型。

3.1.1.创建 Series

import pandas as pd# 从列表创建 Series
s1 = pd.Series([1, 2, 3, 4, 5])
print(f"s1:\n{s1}")# 指定索引创建 Series
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(f"s2:\n{s2}")# 从字典创建 Series
s3 = pd.Series({'x': 100, 'y': 200, 'z': 300})
print(f"s3:\n{s3}")

3.1.2.访问 Series 元素

# 按位置访问
print(f"s1[0]: {s1[0]}")
print(f"s2[1]: {s2[1]}")# 按索引访问
print(f"s2['a']: {s2['a']}")
print(f"s3['y']: {s3['y']}")

3.2.DataFrame

DataFrame 是一种二维的表格数据结构,类似于电子表格或 SQL 表格。它由多列数据组成,每列可以是不同的数据类型。

3.2.1.创建 DataFrame

# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']
}
df1 = pd.DataFrame(data)
print(f"df1:\n{df1}")# 从二维数组创建 DataFrame
data2 = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
df2 = pd.DataFrame(data2, columns=['A', 'B', 'C'])
print(f"df2:\n{df2}")# 从字典的列表创建 DataFrame
data3 = [{'Name': 'David', 'Age': 40},{'Name': 'Eve', 'Age': 45}
]
df3 = pd.DataFrame(data3)
print(f"df3:\n{df3}")

3.2.2.访问 DataFrame 元素

# 按列访问
print(f"df1['Name']:\n{df1['Name']}")
print(f"df1[['Name', 'Age']]:\n{df1[['Name', 'Age']]}")# 按行访问(使用索引)
print(f"df1.loc[0]:\n{df1.loc[0]}")
print(f"df1.loc[0:1]:\n{df1.loc[0:1]}")# 按行访问(使用位置)
print(f"df1.iloc[0]:\n{df1.iloc[0]}")
print(f"df1.iloc[0:2]:\n{df1.iloc[0:2]}")

3.2.3.数据筛选与操作

# 筛选数据
adults = df1[df1['Age'] > 25]
print(f"adults:\n{adults}")# 添加新列
df1['Salary'] = [50000, 60000, 70000]
print(f"df1 with Salary:\n{df1}")# 删除列
df1.drop('City', axis=1, inplace=True)
print(f"df1 without City:\n{df1}")# 更新列值
df1['Age'] = df1['Age'] + 1
print(f"df1 with updated Age:\n{df1}")

3.2.4.数据统计与聚合

# 计算平均值
print(f"Average Age: {df1['Age'].mean()}")# 计算总和
print(f"Total Salary: {df1['Salary'].sum()}")# 分组统计
grouped = df1.groupby('Name').sum()
print(f"grouped:\n{grouped}")

通过这些示例,你可以看到如何使用 Pandas 进行数据的创建、访问、筛选、操作以及统计与聚合分析。Pandas 提供了丰富的功能,使得数据分析和操作变得更加方便和高效。

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

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

相关文章

解答|服务器只能开22端口可以申请IP地址SSL证书吗?

IP地址SSL证书,是一种专门颁发给公网IP地址的SSL证书,而不是常见的基于域名的SSL证书。SSL证书主要用于保障数据在客户端(如用户的浏览器)和服务器之间传输时的加密性和安全性,以防止数据被截取或篡改。 服务器只能开…

翁恺-C语言程序设计-07-1. 换个格式输出整数

07-1. 换个格式输出整数 让我们用字母B来表示“百”、字母S表示“十”&#xff0c;用“12…n”来表示个位数字n&#xff08;<10&#xff09;&#xff0c;换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234&#xff0c;因为它有2个“百”、3个“十”、以…

2024.7.13刷题记录-牛客小白月赛98(未完)

目录 一、A-骰子魔术_牛客小白月赛98 (nowcoder.com) 1.模拟 2.简洁写法 二、B-最少剩几个&#xff1f;_牛客小白月赛98 (nowcoder.com) 贪心-数学 三、C-两个函数_牛客小白月赛98 (nowcoder.com) 1.模拟 2.逆元 一、A-骰子魔术_牛客小白月赛98 (nowcoder.com) 1.模拟 …

github actions方式拉取docker镜像

参考&#xff1a; https://wkdaily.cpolar.cn/archives/gc 注意github actions提供的免费虚拟机空间有限&#xff0c;空间不足会报错&#xff0c;查看大概语句有10来G 我在workflow file里加了df -h 运行查看磁盘情况&#xff1a; 通过pwd命令&#xff0c;可以知道运行目录/ho…

ETL数据集成丨主流ETL工具(ETLCloud、DataX、Kettle)数据传输性能大PK

目前市面上的ETL工具众多&#xff0c;为了方便广大企业用户在选择ETL工具时有一个更直观性能方面的参考值&#xff0c;我们选取了目前市面上最流行的三款ETL工具&#xff08;ETLCloud、DataX、Kettle&#xff09;来作为本次性能传输的代表&#xff0c;虽然性能测试数据有很多相…

【JavaScript】解决 JavaScript 语言报错:Uncaught TypeError: XYZ is not a function

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 变量或对象属性类型错误2. 函数名拼写错误或覆盖3. 作用域问题导致的函数未定义4. 调用未初始化的函数 四、解决方案与预防措施1. 确保变量类型正确2. 检查拼写错误3. 注意作用域4. 初始化变量 五、示例代码…

Web组成架构

网站源码&#xff1a;分脚本类型&#xff0c;分应用方向操作系统&#xff1a;windows&#xff0c;linux中间件&#xff08;搭建平台&#xff09;&#xff1a;apche、IIS、tomcat、nginx等数据库&#xff1a;mssql、oracle、sybase、db2、access等 WEB相关安全漏洞 WEB源码类对…

算法训练营day11 栈与队列(栈的应用,单调队列,优先队列)

&#x1f4a1; 解题思路 &#x1f4dd; 确定输入与输出&#x1f50d; 分析复杂度&#x1f528; 复杂题目拆分 &#xff1a;严谨且完整 地拆分为更小的可以解决的子问题&#xff08;栈和队列的功能&#xff0c;栈和队列的变体应用&#xff09;–&#xff08;多总结&#xff09;…

C#中的反射

dll和exe文件的区别 用途&#xff1a; .exe&#xff08;可执行文件&#xff09;&#xff1a;是可以直接运行的程序文件。当你双击一个 .exe 文件或在命令行中输入它的名字&#xff0c;操作系统会加载并执行这个程序。 .dll&#xff08;动态链接库&#xff09;&#xff1a;包含…

graphviz subgraph添加边界框

subgraph name 属性必须要以cluster开头。 A Quick Introduction to GraphvizAn awesome tool for software documentation and visualizing graphshttps://www.worthe-it.co.za/blog/2017-09-19-quick-introduction-to-graphviz.html digraph {rankdir"LR"// the n…

新版k8s拉取镜像失败问题

新版版从k8s从1.23后放弃使用docker容器作为的默认运行时了&#xff0c;而是采用的containerd&#xff0c;使用时不在使用docker拉取镜像&#xff0c;这就带来了一系列的问题。在k8s1.24之后用户可以选择docker或者选择contained作为容器运行时&#xff0c;如果不指定使用的doc…

【探索Linux】P.39(传输层 —— TCP的三次 “握手” 和四次 “挥手” )

阅读导航 引言一、TCP的三次握手1. 简介2. 图解三次握手3. 名词解释&#xff08;1&#xff09;SYN&#xff08;同步序列编号&#xff09;包&#xff08;2&#xff09;SYN-ACK&#xff08;同步确认&#xff09;包&#xff08;3&#xff09;ACK&#xff08;确认&#xff09;包 4.…

基于matlab的SVR回归模型

1 原理 SVR&#xff08;Support Vector Regression&#xff09;回归预测原理&#xff0c;基于支持向量机&#xff08;SVM&#xff09;的回归分支&#xff0c;其核心思想是通过寻找一个最优的超平面来进行回归预测&#xff0c;并处理非线性回归问题。以下是SVR回归预测原理的系统…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

QT 图片处理

1.qt 图片控件 在Qt中&#xff0c;用于显示图片的控件主要是QLabel。以下是关于Qt图片控件的详细介绍&#xff1a; QLabel控件&#xff1a; QLabel是Qt中用于显示文本或图片的控件。在显示图片时&#xff0c;QLabel通过setPixmap()函数来设置要显示的图片。QPixmap代表Qt中的…

分析函数关系调用

参考下面 这个是专题 https://blog.csdn.net/benkaoya/category_7550213.html 绘制函数调用图&#xff08;call graph&#xff09;&#xff08;4&#xff09;&#xff1a;doxygen graphviz 绘制函数调用图&#xff08;call graph&#xff09;&#xff08;4&#xff09;&…

面试内容集合

用例设计方法 &#xff08;一&#xff09;等价类划分  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理…

智慧校园毕业管理:全面解读毕业批次功能

在智慧校园的毕业管理系统中&#xff0c;毕业批次模块通过其精心设计的毕业批次功能&#xff0c;为即将离校的学子们提供了一个高效、便捷的过渡平台。这一特色功能聚焦于特定时间段内的毕业生群体&#xff0c;巧妙融合数字技术&#xff0c;从信息核实到最终的离校程序&#xf…

代码随想录二刷7.22|977.有序数组的平方

暴力解法&#xff1a; ——如果想暴力解决这个问题的话&#xff0c;可以像题目那样&#xff0c;先将每一个元素平方&#xff0c;然后再排序 双指针&#xff1a; ——从题目中找到的信息&#xff1a;这是一个非递减顺序的整数数组&#xff0c;从例子中&#xff0c;可以容易看…

西邮计科嵌入式复习

西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习