Pandas之数据结构解析——Series的介绍

本文主要介绍了Pandas中的Series数据结构,包括其创建方式、属性、切片操作、dtype以及向量化操作和标签对齐特性。Series是一维数据结构,可以保存多种类型的数据,并通过索引进行便捷操作。其特有的标签对齐功能为数据分析提供了便利。

作为数据分析师,在日常生活中我们会接触到各种各样的需求,其中excel更必不可少,面对庞大数据量,快速的需求我们该如何处理,这时Pandas就显得举足轻重,可以快速有效的处理表格数据,实现快速并准确的输出。

1.Pandas的数据结构详细介绍

Pandas中一共有三种数据结构,分别为Series(一维数据结构)、DataFrame(二维表格型数据结构)、Multilndex(三维数据结构)。

我们今天先来详细的了解下Series的内容:

Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据(value)和与之相关的索引(index)两部分构成。

1.1 Series的创建

#入 NumPy 并将 pandas 加载到您的命名空间中:
import pandas as pd
import numpy as np
pd.Series(data = None, index = None, dtype = None)

输出:Series([], dtype: float64)
"""
注释:参数: 
data:传入的数据,可以是ndarray、list等 
index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 
dtype:数据的类型
"""

请看以下的相关实例:

  • 指定内容,默认索引:
#创建一个Series通过传递值的列表,让Pandas创建一个默认的整数索引:
pd.Series([1,2,3,4,5,6,7,8,9,0])
输出:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9    0
dtype: int64
  • wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    指定索引 

#指定索引
pd.Series([1,2,3,4,5], index=[9,4,6,7, 8])
输出:
9    1
4    2
6    3
7    4
8    5
dtype: int64
  • 通过字典数据创建

 

#通过字典数据创建
df = pd.Series({'name':'zhangsan', 'age':18, 'job':'IT'})
df
输出:
name    zhangsan
age           18
job           IT
dtype: object

pandas 支持非唯一索引值。如果尝试执行不支持重复索引值的操作,则此时将引发异常。失败的原因几乎都是基于性能的(计算中有很多实例,比如 GroupBy 的部分,其中没有使用索引)。

1.2 Series的属性

为了更方便地操作Series对象中的索引和数据,Series中提供了两个属性index和values:

  • index的介绍 
df = pd.Series({'name':'zhangsan', 'age':18, 'job':'IT'})
df.index
输出:Index(['name', 'age', 'job'], dtype='object')
  • Values的介绍 
df = pd.Series({'name':'zhangsan', 'age':18, 'job':'IT'})
df.values
输出:array(['zhangsan', 18, 'IT'], dtype=object)
  • 利用索引获取数据 
df = pd.Series({'name':'zhangsan', 'age':18, 'job':'IT'})
df[2]#用的是序号为2的索引,在df中序号为2的是job
输出:'IT'

1.3 Series切片

Series非常相似ndarray,并且是大多数 NumPy 函数的有效参数。但是,切片等操作也会对索引进行切片。

实例:

df = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
df
输出:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9    0
dtype: int64

df[:3]
输出:
0    1
1    2
2    3
dtype: int64

df[2:7]
输出:
2    3
3    4
4    5
5    6
6    7
dtype: int64

df[df>df.median()]
输出:
4    5
5    6
6    7
7    8
8    9
dtype: int64

df[[3,7,4]]
输出:
3    4
7    8
4    5
dtype: int64

np.exp(df)
输出:
0       2.718282
1       7.389056
2      20.085537
3      54.598150
4     148.413159
5     403.428793
6    1096.633158
7    2980.957987
8    8103.083928
9       1.000000
dtype: float64

我们将处理基于数组的索引,就像 在索引部分一样。

1.4 dtype介绍

像 NumPy 数组一样,pandas 系列有一个dtype

df.dtype
输出:dtype('int64')

当您需要在没有索引的情况下执行某些操作(例如禁用自动对齐)时,访问数组会很有用。
Series.array将永远是ExtensionArray. 简而言之,ExtensionArray 是围绕一个或多个具体数组(如 numpy.ndarray. pandas 知道如何获取 ExtensionArray并将其存储在 Series或 a 的列中DataFrame。

1.5 向量化操作和标签对齐与系列

df1 = pd.Series([1,2,3,4,5])
df2 = pd.Series([6,7,8,9,0])
df1
输出:
0    1
1    2
2    3
3    4
4    5
dtype: int64

df2
输出:
0    6
1    7
2    8
3    9
4    0
dtype: int64
  • 运算
#加法
df1+df2
输出:
0     7
1     9
2    11
3    13
4     5
dtype: int6

#乘法:
df1 * 2
输出:
0     2
1     4
2     6
3     8
4    10
dtype: int64

df1 * df2
输出:
0     6
1    14
2    24
3    36
4     0
dtype: int64


#计算e的n次幂
np.exp(df1)
输出:
0      2.718282
1      7.389056
2     20.085537
3     54.598150
4    148.413159
dtype: float64
  • 标签对齐
df1[1:]+df[:-2]
输出:
0     NaN
1     4.0
2     6.0
3     8.0
4    10.0
5     NaN
6     NaN
7     NaN
dtype: float64

未对齐系列之间的操作结果将包含所涉及索引的并集。如果在一个系列或另一个系列中未找到标签,则结果将标记为 missing NaN。无需进行任何明确的数据对齐即可编写代码,这为交互式数据分析和研究提供了极大的自由度和灵活性。pandas 数据结构的集成数据对齐功能将 pandas 与大多数用于处理标记数据的相关工具区分开来。

人生苦常,但我们仍要追寻快乐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值