Pandas学习1-Series类型


前言

Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。
Pandas 有两种重要的数据结构,Series(一维数组)和DataFrame(二维数组)。
Series是带索引的一维数组,能够存储各种数据类型,比如字符数、整数、浮点数、Python 对象等,Series 用 name 和 index 属性来描述数据值。Series 是一维数据结构,因此其维数不可以改变。
DataFrame 是一种二维表格型数据的结构,既有行索引,也有列索引。行索引是 index,列索引是 columns。
本文主要介绍Series。


一、Series是什么?

Series 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签(即索引)组成,其中标签与数据值之间是一一对应的关系。
Series的字符串表现形式为:索引在左边,值在右边。如果没有为数据指定索引,就会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表现形式和索引对象。
Series 可以保存任何数据类型,比如整数、字符串、浮点数、Python 对象等。

二、创建Series对象

Series是一种类似于一维数组的对象,它由一维数组以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series。Series的字符串表现形式为:索引在左边,值在右边。
如果没有为数据指定索引,就会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表现形式和索引对象。

1.语法

代码如下(示例):

import pandas as pd
s=pd.Series( data, index, dtype, copy)

参数说明如下:

参数名称描述
data输入的数据,可以是列表、常量、ndarray 数组等。
index索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。
dtypedtype表示数据类型,如果没有提供,则会自动判断得出。
copy表示对 data 进行拷贝,默认为 False。

我们也可以使用数组、字典、标量值或者 Python 对象来创建 Series 对象。

2.创建一个空对象

import numpy as np
import pandas as pd
from pandas import Series,DataFrames
s = pd.Series()
s

FutureWarning: The default dtype for empty Series will be ‘object’ instead of ‘float64’ in a future version. Specify a dtype explicitly to silence this warning.
s = pd.Series()
Series([], dtype: float64)

3.从标量值创建

import numpy as np
import pandas as pd
from pandas import Series,DataFrames
pd.Series(25,index=['a','b','c'])#index=['a','b','c']不能省略
s

a 25
b 25
c 25
dtype: int64

index=[‘a’,‘b’,‘c’]不能省略,但是可以省略index=,以下代码运行结果相同。

s=pd.Series(25,['a','b','c'])
s

标量值按照 index 的数量进行重复,并与其一一对应。

4.从python列表创建

自动索引

#自动索引
import pandas as pd
s=Series([3,5,6,8,9,2])
s

0 3
1 5
2 6
3 8
4 9
5 2
dtype: int64

自定义索引

#自定义索引
s=Series([3,5,6,8,9,2],index=['a','b','c','d','e','f'])
s

a 3
b 5
c 6
d 8
e 9
f 2
dtype: int64

省略index=,运行结果相同

#可省略index=
obj2=Series([3,5,6,8,9,2],['a','b','c','d','e','f'])
obj2

5.从ndarray创建

ndarray 是 NumPy 中的数组类型,当 data 是 ndarry 时,传递的索引必须具有与数组相同的长度。假如没有给 index 参数传参,在默认情况下,索引值将使用是 range(n) 生成,其中 n 代表数组长度,如下所示:
[0,1,2,3…. range(len(array))-1]

使用默认索引,创建 Series 序列对象:

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(['a','b','c','d'])
print (s)

0 a
1 b
2 c
3 d
dtype: object

自定义索引,创建 Series 序列对象

#自定义索引标签(即显示索引)
s = pd.Series(['a','b','c','d'],index=[100,101,102,103])
print(s)

100 a
101 b
102 c
103 d
dtype: object
如果索引个数和数组个数不匹配,会报错。如:
Length of values (4) does not match length of index (5)。

6.从字典类型创建

直接使用字典创建Series类型:

d=pd.Series({'a':9,'b':8,'c':7})
d

a 9
b 8
c 7
dtype: int64

d=pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])#指定索引
d

c 7.0
a 9.0
b 8.0
d NaN
dtype: float64
index指定Series的结构,并从字典中选取对应值。
当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。

7.从其他函数创建

Series也可以从其他函数创建,例,从arange创建。

n=pd.Series(np.arange(5))
n

0 0
1 1
2 2
3 3
4 4
dtype: int32

n=pd.Series(np.arange(5),index=np.arange(9,4,-1))
n

9 0
8 1
7 2
6 3
5 4
dtype: int32

三、Series类型的基本操作

Series创建好后,就可以对Series类型进行一些基本操作。Series操作类似于python列表,类似于numpy数组,也类似于python字典。

1.获得所有索引和值

import pandas as pd
b=pd.Series([9,8,7,6],['a','b','c','d'])
b

a 9
b 8
c 7
d 6
dtype: int64

#获取所有索引
b.index

Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)
索引类型index

#获取所有值
b.values

array([9, 8, 7, 6], dtype=int64)
值的类型array

2.获取单个或一组值

可以使用自动索引(位置索引)访问,也可以使用自定义索引(索引标签)访问。

(1)访问单个值

可以使用自定义索引

b['a']

9
可以使用自动索引访问,自动索引有系统自动生成

b[0]

9

(2)访问多个值

可以使用自定义索引访问多个元素值

b[['b','d','a']]

b 8
d 6
a 9
dtype: int64

b[['b','d',0]]

KeyError: ‘[0] not in index’
自动索引和自定义索引并存,两套索引并存,但不能混用。

通过切片的方式访问 Series 序列中的数据

b[:3]

a 9
b 8
c 7
dtype: int64

3.可以对Series进行NumPy数组运算

b[b>7]

a 9
b 8
dtype: int64

4.可以对Series进行算数运算

在运算过程中,pandas会自动对齐不同索引的数据。

dic={'m':4,'n':5,'p':6}
a=pd.Series(dic)
ind=['m','n','a','b']
b=pd.Series([9,8,7,6],index=ind)
a+b

a NaN
b NaN
m 13.0
n 13.0
p NaN
dtype: float64

5.Series的修改

Series对象可以随时修改立即生效。
Series的索引可以通过赋值的方式进行改变。

b.index=['u','v','w','a']
b

u 9
v 8
w 7
a 6
dtype: int64

Series对象本身及其索引都可以有一个名字,存储在属性.name中。

b.name='Sereis对象b'
b.index.name='索引列'
b

索引列
u 9
v 8
w 7
a 6
Name: Sereis对象b, dtype: int64

四、常用属性和方法

1.常用属性

名称属性
axes以列表的形式返回所有行索引标签。
dtype返回对象的数据类型。
empty返回一个空的 Series 对象。
ndim返回输入数据的维数。
size返回输入数据的元素数量。
values以 ndarray 的形式返回 Series 对象。
index返回一个RangeIndex对象,用来描述索引的取值范围。
import pandas as pd
b=pd.Series([9,8,7,6],['a','b','c','d'])
print("The axes are:",b.axes)
print("The dtype is:",b.dtype)
print("是否为空对象?",b.empty)
print ("b.ndim:",b.ndim)
print("series的长度大小:",b.size)
print("输出series中数据:",b.values)
print("b.index:",b.index)

The axes are: [Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)]
The dtype is: int64
是否为空对象? False
b.ndim: 1
series的长度大小: 4
输出series中数据: [9 8 7 6]
b.index: Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)

b=pd.Series([9,8,7,6])
print("The axes are:",b.axes)
print("b.index:",b.index)

The axes are: [RangeIndex(start=0, stop=4, step=1)]
b.index: RangeIndex(start=0, stop=4, step=1)

2.常用方法

1. head()&tail()查看数据

如果想要查看 Series 的某一部分数据,可以使用 head() 或者 tail() 方法。其中 head() 返回前 n 行数据,默认显示前 5 行数据。tail() 返回的是后 n 行数据,默认为后 5 行。

2. isnull()&nonull()检测缺失值

isnull() 和 nonull() 用于检测 Series 中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少。
isnull():如果为值不存在或者缺失,则返回 True。
notnull():如果值不存在或者缺失,则返回 False。

import pandas as pd
s = pd.Series(range(10))
print ("The original series is:",s)#0-9
print ("s.head():",s.head())#0-4
#返回前三行数据
print ("s.head(3)",s.head(3))#0-2
print ("s.tail():",s.tail())#5-9
#返回后三行数据
print ("s.tail(3)",s.tail(3))#7-9
print(pd.isnull(s))  #False,
print(pd.notnull(s)) #True

总结

主要学习了Pandas库的Series类型,创建、访问、修改、常用属性和方法。

本文主要学习来源:
1.http://c.biancheng.net/pandas/series.html
2.北京理工大学嵩天老师慕课4.2.2Pandas库的Series类型

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pandas-official-tut-zh epub是指Pandas官方教程的中文电子书格式。Pandas是一个强大的数据分析和处理库,被广泛应用于数据科学和数据分析领域。Pandas官方教程提供了详细的指导和示例,帮助用户学习和使用Pandas库。 这本Pandas官方教程的中文电子书以epub格式提供,这意味着我们可以在支持epub格式的电子书阅读器或软件中阅读它。epub格式是一种开放的电子书标准,可以自由地在各种平台上阅读,如电脑、平板电脑、智能手机等。使用epub格式的好处是,它可以根据设备的屏幕尺寸和用户的设置自动调整页面布局和字体大小,提供更好的阅读体验。 这本教程的目标是帮助读者从零开始学习Pandas,并逐步深入了解其功能和用法。它提供了丰富的示例代码和实践演练,以帮助读者掌握Pandas的各种技术和技巧。教程涵盖了Pandas的基本数据结构,如Series和DataFrame,以及它们的索引、切片、过滤、排序等操作。此外,还介绍了Pandas的数据清洗、处理缺失值、数据合并、分组聚合等高级技术。 这本教程的中文版本使更多母语为中文的读者能够更轻松地学习和理解Pandas的概念和功能。epub格式的电子书具有良好的可读性和易于导航的特点,读者可以根据自己的需求和节奏进行学习,随时随地获取所需的知识。 总之,pandas-official-tut-zh epub是一本Pandas官方教程的中文电子书,提供了全面且易于理解的Pandas学习资源,可帮助读者入门并熟练使用该库。无论是初学者还是有经验的数据科学家,都可以从中受益,并将其应用于实际的数据分析项目中。 ### 回答2: pandas-official-tut-zh epub是一本关于pandas库的官方指南的电子书。Pandas是一个强大的数据分析工具,它使用Python编程语言开发。这本电子书提供了从基础概念到高级用法的全面介绍,将帮助读者掌握该库的各种功能和技巧。 该电子书以易于理解和直观的方式解释了pandas库的核心概念,如数据结构、索引和选择、数据聚合和生成等。读者可以通过电子书学习如何使用pandas来处理、清洗和分析各种类型的数据,包括结构化数据、时间序列数据和文本数据。 电子书的内容结构清晰,各章节之间有明确的连贯性,使读者可以系统地学习和理解pandas库的功能和用法。除了基本的数据操作,该电子书还介绍了一些高级特性,如数据合并、重塑和透视等,以及与其他Python工具库的集成。 pandas-official-tut-zh epub不仅提供了理论知识,还包含了丰富的实例代码和可运行的示例,读者可以通过这些实例更深入地理解和运用pandas库。此外,该电子书还提供了一些实际的案例研究,展示了pandas在真实世界中的应用。 总之,pandas-official-tut-zh epub是一本非常有价值的电子书,适合对数据处理和分析感兴趣的读者。无论是初学者还是有一定经验的开发者,都可以从该电子书中获得关于pandas库的全面指导和实用技巧。 ### 回答3: pandas-official-tut-zh epub是一个关于Python数据分析Pandas的中文官方教程的电子书文件。Pandas是一个强大的数据处理和分析工具,可用于处理和操作大型数据集。 首先,这本电子书是官方教程,意味着内容是由Pandas的开发团队编写的,可以保证信息的准确性和可靠性。它提供了详细的指导和示例,帮助读者了解Pandas的基本功能和高级技术。 这本教程以epub格式提供,这意味着它可以在各种电子设备上进行阅读,如电脑、平板电脑和智能手机。由于epub格式具有自适应屏幕大小和排版的优势,因此读者可以在任何设备上获得良好的阅读体验。 该教程分为多个章节,从介绍Pandas的基本概念和数据结构开始,逐步深入讲解Pandas的应用和高级功能。它涵盖了数据清洗、转换、聚合、合并等方面的常见任务,以及时间序列和数据可视化等更高级的主题。 读者可以通过学习这本教程来掌握Pandas的核心概念和操作技巧,从而更有效地进行数据分析和处理。这对于数据科学家、数据分析师和Python开发者来说都是非常有价值的资源。 总而言之,pandas-official-tut-zh epub是一本官方编写的关于Python数据分析Pandas的中文教程电子书,为读者提供了全面而系统的学习资源,帮助他们掌握Pandas的各种功能和技术。无论是初学者还是有经验的用户都可以从中受益,并且它的epub格式使得阅读更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值