作为数据分析师,在日常生活中我们会接触到各种各样的需求,其中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
-

指定索引
#指定索引
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 与大多数用于处理标记数据的相关工具区分开来。
人生苦常,但我们仍要追寻快乐
本文主要介绍了Pandas中的Series数据结构,包括其创建方式、属性、切片操作、dtype以及向量化操作和标签对齐特性。Series是一维数据结构,可以保存多种类型的数据,并通过索引进行便捷操作。其特有的标签对齐功能为数据分析提供了便利。

2048

被折叠的 条评论
为什么被折叠?



