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

Pandas的数据结构

Pandas的数据结构

  • 1. 认识Pandas中的数据结构和数据类型
  • 2. Series对象
    • 2.1 定义
    • 2.2 创建Series对象
      • 2.1.1 通过numpy.ndarray数组来创建
      • 2.1.2 通过pandas.series来创建
      • 2.1.3 使用字典或元组创建对象
    • 2.3 series对象常用api
  • 3. DataFrame对象
    • 3.1 创建df对象
    • 3.2 DataFrame对象常用API


1. 认识Pandas中的数据结构和数据类型

import pandas as pd
# 我的数据文件放置在当前项目下jupyterdata下
df = pd.read_csv('./juyperdata/1960-2019全球GDP数据.csv', encoding='gbk', )  
df # 显示全部数据

在这里插入图片描述

在 Pandas 库中,Series 和 DataFrame 是两个最核心的数据结构。它们的关系可以简单理解为:DataFrame 是由多个 Series 组成的。

让我用一个形象的比喻来解释:

  • Series → 就像 Excel 中的一列数据

  • DataFrame → 就像整个 Excel 表格,包含多列数据
    具体解释可查阅
    Pandas初体验

为上一节中读取并展示出来的数据,以此为例我们来讲解Pandas的核心概念,以及这些概念的层级关系:

  • DataFrame
    • Series
      • 索引列
      • 索引名、索引值
      • 索引下标、行号
    • 数据列
      • 列名
      • 列值,具体的数据

其中最核心的就是Pandas中的两个数据结构:DataFrame和Series

2. Series对象

2.1 定义

Series也是Pandas中的最基本的数据结构对象,下文中简称s对象;是DataFrame的列对象,series本身也具有索引。

Series是一种类似于一维数组的对象,由下面两个部分组成:
values:一组数据(numpy.ndarray类型)
index:相关的数据索引标签;如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

2.2 创建Series对象

2.1.1 通过numpy.ndarray数组来创建

导入pandas和numpy包,自动生成索引

import numpy as np
import pandas as pd
# 创建numpy.ndarray对象
# array([1, 2, 3])
# print打印输出 [1 2 3]
# type()为<class 'numpy.ndarray'>
n1 = np.array([1, 2, 3])# 创建Series对象
# type()为<class 'pandas.core.series.Series'>
s1 = pd.Series(n1)
s1

结果如下:
在这里插入图片描述
也可以,指定索引

n1 = np.array([1, 2, 3])
# 创建Series对象,同时指定索引
s1 = pd.Series(n1, index=['A', 'B', 'C'])
s1

在这里插入图片描述

2.1.2 通过pandas.series来创建

# 使用默认自增索引
s2 = pd.Series([1, 2, 3])
print(s2)
# 自定义索引
s3 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s3

在这里插入图片描述

2.1.3 使用字典或元组创建对象

#使用元组
tst = (1,2,3,4,5,6)
pd.Series(tst)#使用字典:
dst = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6}
pd.Series(dst)

在这里插入图片描述

我们发现我们想要打出两个结果,但是只显示了一个
这是因为:
在JupyterNotebook中,默认只会打印输出最后出现的变量名;许多时候我们要写大量的print;通过下面的2行代码即可解决这个问题

#在notebook执行代码之前首先需要先执行下面代码以设置InteractiveShell.ast_node_interactivity参数
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

#这个方法的作用范围仅限当前kernel(一个.ipynb文件对应一个kernel)
可以让我们在jupyternotebook中不用写print

2.3 series对象常用api

  • 构造一个Series对象
s4 = pd.Series([i for i in range(6)], index=[i for i in 'ABCDEF'])
s4
# 返回结果如下
A    0
B    1
C    2
D    3
E    4
F    5
dtype: int64
  • Series对象常用属性和方法
# s对象有多少个值,int
len(s4) 
s4.size# s对象有多少个值,单一元素构成的元组 (6,)
s4.shape # 查看s对象中数据的类型
s4.dtypes# s对象转换为list列表
s4.to_list()# s对象的值 array([0, 1, 2, 3, 4, 5], dtype=int64)
s4.values # s对象的值转换为列表
s4.values.tolist() # s对象可以遍历,返回每一个值
for i in s4: print(i)# 下标获取具体值
s4[1] # 返回前2个值,默认返回前5个
s4.head(2) # 返回最后1个值,默认返回后5个
s4.tail(1) # 获取s对象的索引 Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
s4.index # s对象的索引转换为列表
s4.index.to_list() # s对象中数据的基础统计信息
s4.describe()
# 返回结果及说明如下
#count    6.000000 # s对象一共有多少个值
#mean     2.500000 # s对象所有值的算术平均值
#std      1.870829 # s对象所有值的标准偏差
#min      0.000000 # s对象所有值的最小值
#25%      1.250000 # 四分位 1/4位点值
#50%      2.500000 # 四分位 1/2位点值
#75%      3.750000 # 四分位 3/4位点值
#max      5.000000 # s对象所有值的最大值
#dtype: float64
# 标准偏差是一种度量数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。
# 四分位数(Quartile)也称四分位点,是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。
  • seriest对象转换为df对象
s4.to_frame()

在这里插入图片描述

3. DataFrame对象

3.1 创建df对象

  • 使用字典加列表创建df,使默认自增索引
df1_data = {'日期': ['2021-08-21', '2021-08-22', '2021-08-23'],'温度': [25, 26, 50],'湿度': [81, 50, 56] 
}
df1 = pd.DataFrame(data=df1_data)
df1# 返回结果如下日期    温度    湿度
0    2021-08-21    25    81
1    2021-08-22    26    50
2    2021-08-23    50    56
  • 使用列表加元组创建df,并自定义索引
df2_data = [('2021-08-21', 25, 81),('2021-08-22', 26, 50),('2021-08-23', 27, 56)
]
df2 = pd.DataFrame(data=df2_data, columns=['日期', '温度', '湿度'],index = ['row_1','row_2','row_3'] # 手动指定索引
)
df2# 返回结果如下日期    温度    湿度
row_1    2021-08-21    25    81
row_2    2021-08-22    26    50
row_3    2021-08-23    27    56

3.2 DataFrame对象常用API

# 返回df的行数
len(df2)# df中数据的个数
df2.size# df中的行数和列数,元组 (行数, 列数)
df2.shape# 返回列名和该列数据的类型
df2.dtypes# 返回nparray类型的2维数组,每一行数据作为一维数组,所有行数据的数组再构成一个二维数组
df2.values# 返回df的所有列名
df2.columns# df遍历返回的只是列名 
for col_name in df2: print(col_name)# 返回df的索引对象
df2.index# 返回第一行数据,默认前5行
df2.head(1)# 返回倒数第1行数据,默认倒数5行
df2.tail(1)# 返回df的基本信息:索引情况,以及各列的名称、数据数量、数据类型
df2.info() # series对象没有info()方法# 返回df对象中所有数字类型数据的基础统计信息
# 返回对象的内容和Series.describe()相同
df2.describe()# 返回df对象中全部列数据的基础统计信息
df2.describe(include='all')

在这里插入图片描述

如果有帮助到你,请点赞收藏

http://www.xdnf.cn/news/19010.html

相关文章:

  • 第十七章 Java基础-常用API-System
  • [p2p-Magnet] 数据模型(GORM) | DHT爬虫 | 分类器
  • React Hook+Ts+Antd+SpringBoot实现分片上传(前端)
  • 数据湖与数据仓库
  • Qt 中日志级别
  • ArcGIS+Fragstats:土地利用统计分析、景观格局指数计算与地图制图
  • Android Keystore签名文件详解与安全防护
  • AI视频生成工具全景对比:元宝AI、即梦AI、清影AI和Vidu AI
  • 【贪心 单调栈】P10334 [UESTCPC 2024] 饮料|普及+
  • 工业 5G + AI:智能制造的未来引擎
  • Day16_【机器学习建模流程】
  • 【Rust】 3. 语句与表达式笔记
  • Java HTTP 请求:Unirest 使用指南及与 HttpClient 对比
  • .Net Core Web 架构(Request Pipeline)的底层实现
  • 自己定义的模型如何用hf的from_pretrained
  • Linux(一) | 初识Linux与目录管理基础命令掌握
  • 测试题ansible临时命令模块
  • CuTe C++ 简介01,从示例开始
  • imx6ull-驱动开发篇47——Linux SPI 驱动实验
  • Electron解压缩文件
  • hive on tez为什么写表时,要写临时文件到hdfs目录
  • docker 1分钟 快速搭建 redis 哨兵集群
  • 配置nginx.conf (增加21001端口实例操作)
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(三)
  • [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU之比较器
  • jQuery 从入门到实践:基础语法、事件与元素操作全解析
  • mac电脑双屏显示时程序坞跑到副屏的解决方法
  • 机器视觉学习-day10-图像添加水印
  • Mybatis 与 Springboot 集成过程详解
  • Kubernetes一EFK日志架构