Pandas | 数据结构

2022-12-20 09:27:55 浏览数 (1)

前言

上一期介绍了将文件加载到Pandas对象,这个对象就是Pandas的数据结构。本次我们就来系统介绍一下Pandas的数据结构。

本文框架

  • 1. 数据结构简介
  • 2. 导入Pandas、Numpy
  • 3. Series
    • 3.1 仅有数据列表即可产生最简单的Series
    • 3.2 创建一个具有标签索引的Series
    • 3.3 使用Python字典创建Series
    • 3.4 根据标签索引查询数据
  • 4. DataFrame
    • 4.1 根据多个字典序列创建dataframe
  • 5. 从DataFrame中查询出Series
    • 5.1 查询一列
    • 5.2 查询多列
    • 5.3 查询一行
    • 5.4 查询多行

1. 数据结构简介

Pandas提供Series和DataFrame作为数组数据的存储框架。

DataFrame:代表整个表格对象,是一个二维的数据,有多行和多列;

Series:每一列或者每一行都是一个Series,他是一个一维的数据(图中红框)。

2. 导入Pandas、Numpy

代码语言:javascript复制
import pandas as pd
import numpy as np

3. Series

Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。

3.1 仅有数据列表即可产生最简单的Series

代码语言:javascript复制
# 创建Series
s1 = pd.Series([1,2,5.2,"a"])
s1
# 输出结果(左侧为索引,右侧是数据)
0      1
1      2
2    5.2
3      a
dtype: object
--------------------------------------------------------------------------------
# 获取索引
s1.index
# 输出结果
RangeIndex(start=0, stop=4, step=1)
-------------------------------------------------------------------------------
# 获取数据
s1.values
# 输出结果
array([1, 'a', 5.2, 7], dtype=object)

3.2 创建一个具有标签索引的Series

代码语言:javascript复制
# 创建Series
s2 = pd.Series([1,2,5.2,"a"],index=["a","b","c","d"])
s2
# 输出结果
a      1
b      2
c    5.2
d      a
dtype: object

3.3 使用Python字典创建Series

代码语言:javascript复制
# 创建Series
sdata = {"a":1,"b":2,"c":3,"d":4}
s3 = pd.Series(sdata)
s3
# 输出结果
a    1
b    2
c    3
d    4
dtype: int64

3.4 根据标签索引查询数据

查询一个值时返回值为一个数值,查询多个值时返回Series对象。

代码语言:javascript复制
# 查询一个值
s3["b"]
# 输出结果
2
-------------------------------------------------------------------------------
# 查询多个值(使用双中括号)
s3[["a","c"]]
# 输出结果
a    1
c    3
dtype: int64

4. DataFrame

DataFrame是一个表格型的数据结构;

每列可以是不同的值类型(数值、字符串、布尔值等) 既有行索引index,也有列索引columns,可以被看做由Series组成的字典。

4.1 根据多个字典序列创建dataframe

代码语言:javascript复制
# 创建DataFrame
data = {"a":[1,2,3,4,5],
        "b":[7,8,9,10,11],
        "c":[12,13,14,15,16]}
df = pd.DataFrame(data)
df
# 输出结果
   a   b   c
0  1   7  12
1  2   8  13
2  3   9  14
3  4  10  15
4  5  11  16
---------------------------------------------------------------------------------
# 查询类型
df.dtypes
# 返回结果
a    int64
b    int64
c    int64
dtype: object
---------------------------------------------------------------------------------
# 查询列索引
df.columns
# 返回结果
Index(['a', 'b', 'c'], dtype='object')
---------------------------------------------------------------------------------
# 查询行索引
df.index
# 返回结果
RangeIndex(start=0, stop=5, step=1)

5. 从DataFrame中查询出Series

如果只查询一行、一列,返回的是pd.Series;

如果查询多行、多列,返回的是pd.DataFrame。

代码语言:javascript复制
# 演示数据框
df
# 输出结果
   a   b   c
0  1   7  12
1  2   8  13
2  3   9  14
3  4  10  15
4  5  11  16

5.1 查询一列

结果是一个pd.Series。

代码语言:javascript复制
# 查询一列
df["a"]
# 输出结果
0    1
1    2
2    3
3    4
4    5
Name: a, dtype: int64
-------------------------------------------------------------------------------
# 查看类型
type(df['a'])
# 返回结果
pandas.core.series.Series

5.2 查询多列

结果是一个pd.DataFrame。

代码语言:javascript复制
# 查询多列
df[['a',"b"]]
# 返回结果
   a   b
0  1   7
1  2   8
2  3   9
3  4  10
4  5  11
--------------------------------------------------------------------------------
# 查看类型
type(df[['a',"b"]])
# 返回结果
pandas.core.frame.DataFrame

5.3 查询一行

结果是一个pd.Series。

代码语言:javascript复制
# 查询一行
df.loc[1]
# 返回结果
a     2
b     8
c    13
Name: 1, dtype: int64
--------------------------------------------------------------------------------
# 查看类型
type(df.loc[1])
# 返回结果
pandas.core.series.Series

5.4 查询多行

结果是一个pd.DataFrame。

代码语言:javascript复制
# 查询多行
df.loc[1:3]
# 返回结果
   a   b   c
1  2   8  13
2  3   9  14
3  4  10  15
--------------------------------------------------------------------------------
# 查看类型
type(df.loc[1:3])
# 返回结果
pandas.core.frame.DataFrame

0 人点赞