pandas基础:基本数据结构

embedded/2025/1/24 17:39:53/

基本数据结构

pandas中具有两种基本的数据存储结构,存储一维valuesSeries和存储二维valuesDataFrame,在这两种结构上定义了很多的属性和方法。

Series

Series一般由四个部分组成,分别是序列的值data、索引index、存储类型dtype、序列的名字name。其中,索引也可以指定它的名字,默认为空。

import numpy as np
import pandas as pds = pd.Series(data = [1,2,3],index = ['a','b','c'],dtype = object,name = 'my_series'
)
print(s)

输出:

a    1
b    2
c    3
Name: my_series, dtype: object

object代表了一种混合类型。np.object被弃用。

print(s.values) # pd.Series.data
print(s.index) # pd.Series.index
print(s.dtype) # pd.Series.dtype
print(s.name) # pd.Series.name

.shape获得Series的形状:

print(s.shape) # (3,)

DataFrame

DataFrameSeries的基础上增加了列索引,一个数据框可以由二维的data与行列索引来构造。

import numpy as np
import pandas as pddata = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]df = pd.DataFrame(data = data,index = ['row_%d'%i for i in range(1,4)],columns = ['col_%d'%i for i in range(1,4)]
)
print(df)

输出:

     col_1  col_2  col_3
row_1      1      2      3
row_2      4      5      6
row_3      7      8      9

采用从列索引名到数据的映射来构造数据框,同时再加上行索引:

import numpy as np
import pandas as pddf = pd.DataFrame(data = {'col_1':[1,2,3],'col_2':['A','B','C'],'col_3':np.random.randn(3)},index = ['row_1','row_2','row_3']
)
print(df)

输出:

       col_1 col_2     col_3
row_1      1     A -1.677007
row_2      2     B -0.627393
row_3      3     C  0.563569
import numpy as np
import pandas as pdpd_data = {'col_1': [1,2,4],'col_2': [4,5,6],'col_3': [7,8,9]
}
pd_data_row = ['row_1', 'row_2', 'row_3']
df = pd.DataFrame(data = pd_data,index = pd_data_row
)
print(df)

输出:

      col_1  col_2  col_3
row_1      1      4      7
row_2      2      5      8
row_3      4      6      9

由于这种映射关系,在DataFrame中可以用[col_name][col_list]来取出相应的列与由多个列组成的表,结果分别为SeriesDataFrame

import numpy as np
import pandas as pdpd_data = {'col_1': [1,2,4],'col_2': [4,5,6],'col_3': [7,8,9]
}
pd_data_row = ['row_1', 'row_2', 'row_3']
df = pd.DataFrame(data = pd_data,index = pd_data_row
)
print(df['col_1']) # Series 一列

输出:

row_1    1
row_2    2
row_3    4
Name: col_1, dtype: int64

既然是Series,那么就可以使用Series的获取方法:

print(df['col_1'].values) # 获取Series的值
# [1 2 4]

两个[]嵌套的是DataFrame类型:

print(df[['col_1']]) # DataFrame 一列
#        col_1
# row_1      1
# row_2      2
# row_3      4

pandas 中,当你从DataFrame中选择列时,选择的方式会影响返回的数据类型。具体来说,选择单列时返回的是 Series 类型,而选择多列时返回的是 DataFrame 类型。这种行为是设计上的选择,目的是为了提供更灵活的数据操作方式。

列名选择得到的是Series。

列名列表选择得到的是DataFrame。

同时,DataFrame也有形如Series的获取方法:

print(df.values)
print(df.index)
print(df.columns)
print(df.dtypes)
print(df.shape)
# [[1 4 7]
#  [2 5 8]
#  [4 6 9]]
# Index(['row_1', 'row_2', 'row_3'], dtype='object')
# Index(['col_1', 'col_2', 'col_3'], dtype='object')
# col_1    int64
# col_2    int64
# col_3    int64
# dtype: object
# (3, 3)

Joyful-Pandas-课程详情 | Datawhale


http://www.ppmy.cn/embedded/156625.html

相关文章

C++并发编程之提高C++多线程应用可测试性的思想和方法

提高C多线程应用的可测试性是一个重要的课题,因为多线程应用程序通常比单线程应用程序更复杂,更容易出现难以复现的并发问题。为了确保多线程应用的可靠性和正确性,可以采用以下思想和方法来提高其可测试性。 1. 模块化设计 将多线程应用分…

WPF MVVM 模式如何监听IsVisibleChanged 事件

原本以为这是一个很简单的问题&#xff0c;但是我却走了不少的弯路。记录下来自省。 我使用的是库System.Windows.Interactivity.dll&#xff0c;首先在xaml 中使用了EventTrrigger <!-- 当 IsVisibleChanged 事件触发时&#xff0c;执行绑定的命令 --> <!--<…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑&#xff0c;但是可能时间较长文档不全&#xff0c;只能参考Android或iOS代码&#xff0c;有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写&#xff0c;虽…

Excel-XLOOKUP-返回指定范围的数据

XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) 第一参数lookup_value是必需参数&#xff0c;指定需要查询的值&#xff1b; 第二参数lookup_array是必需参数&#xff0c;指定查询的单元格区域或数组&#xff1b; 第三参数…

ChromeOS 132 版本更新

ChromeOS 132 版本更新 1. 企业定制化 Chrome Web Store 管理员现在可以使用新设置定制 Chrome Web Store 以适应他们管理的用户&#xff0c;包括以下功能&#xff1a; 添加公司标志添加首页横幅和自定义公告策划扩展集合实施基于类别的控制 这些设置可以通过管理员控制台进…

每日一题 414. 第三大的数

414. 第三大的数 简单 class Solution { public:int thirdMax(vector<int>& nums) {int n nums.size();long first , second,third;first second third LONG_MIN ;bool find false;for(auto num : nums){if(num > first){ third second;second first…

docker启动服务占用172.18网段怎么改成其他网段?和网桥有关吗?或者怎么改docker-compose启动用的yml文件

要修改 Docker 服务使用的网段(如从 172.18 改为其他网段),可以通过以下步骤实现: 1. 修改 Docker 默认网桥的网段 Docker 默认使用 docker0 网桥,其网段通常为 172.17.0.0/16。你可以通过修改 Docker 的配置文件来更改默认网段。 修改 Docker 配置文件 编辑 Docker 的…

【spring】集成JWT实现登录验证

在 Spring 应用中&#xff0c;使用 JSON Web Token (JWT) 是一种常见的认证和授权机制。JWT 是一种基于 JSON 的开放标准 (RFC 7519)&#xff0c;用来在各方之间传递安全、可信的数据。以下是如何在 Spring 框架中集成和使用 JWT 的完整指南。 核心概念 JWT 结构&#xff1a; H…