Python数据分析pandas之series初识
Posted ShenLiang2025
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据分析pandas之series初识相关的知识,希望对你有一定的参考价值。
Python数据分析pandas之series初识
声明与简介
pandas是一个基于python的、快速的、高效、灵活、易用的开源的数据处理、分析包(工具)。。pandas构建在numpy之上,它通过DataFrame(数据框)来操作数据。数据框是一个高效的可以指定行和列标签的多维数组,通过这种数据类型可以更方便的操作、分析数据。本文主要介绍Series的初始化和访问。
创建Series
Series是个一维的索引化数组,和定义一维的ndrray类似,我们可以通过”[]”直接定义。
通过ndarray创建Series
#通过numpy的ndarry初始化Series
import pandas as pd
import numpy as np
serie1= pd.Series(np.array([1, 2, 3, 4]))
print(serie1)
#结果
0 1
1 2
2 3
3 4
dtype: int32
#注:这里没有指定索引,默认的索引是数值型的,从0开始。
创建无索引内容Series
#通过np.Series直接创建Series。
import pandas as pd serie1= pd.Series([3,5,8]) print(serie1) print(type(serie1.values),serie1.values)
#结果,从结果可以看到Series.values返回的是numpy的ndarray类型。
0 3
1 5
2 8
dtype: int64
<class 'numpy.ndarray'> [3 5 8]
那么这里我们不难发现和一维的ndarray相比,Series在索引上是显式的,即数据里带有索引信息。当然索引的内容可以不都是数字型的,而ndarray的索引却都是数字型的。
创建有索引内容Series
# 这里创建一个显式索引定义的Series,演示的内容主要是可以通过指定的索引内容来访问Series里的数据。另外这里也举例说明了Series里自动实现元素类型的统一,比如元素类型有int和float时,int都统一转换为float。
import pandas as pd
serie1= pd.Series([3,5,8.23],index=['id','no','seq'])
print(serie1) print(type(serie1.values),serie1.values)
print("索引号"+'seq'+'\\t:'+str(serie1['seq']))
通过字典不指定索引创建Series
# 通过字典来创建Series,这里的字典即是key:value键值对。
import pandas as pd
dic1 ={"id": 10001, "name":"张三", "course":"英文", "score":"90" }
serie1= pd.Series(dic1)
print(serie1) print("索引号"+'name'+'\\t:'+str(serie1['name']))
索引不同元素相同方式初始化Series
# 通过指定索引方式创建Series,这里所有的元素都初始化为同样的值。
import pandas as pd
serie1= pd.Series(10,index=['id','score','level'])
print(serie1)print("索引号"+'name'+'\\t:'+str(serie1['name']))
#结果
id 10
score 10
level 10
dtype: int64
#这种方式指定了索引,所有的索引对应的元素都是相同的值。
#如果想指定数据类型,可以加上参数dtype,比如dtype=np.int32
通过字典指定索引创建Series
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"
}
serie1= pd.Series(dic1,index=['course','id','score'])
print(serie1)
print(serie1['score'])
print(dic1)
print(serie1.size)
#结果
course 英文
id 10001
score 90
dtype: object
90
3
{'course': '英文', 'id': '10001', 'name': '张三', 'score': '90'}
#这里不难发现,虽然字典里有4个元素,但因为生成Series时指定的索引仅有3个且和字典的key名一致,所以最终生成Series仅有3个元素。我们可以通过它的size可以看到。
通过字典数组创建Series
# 通过字典数组来创建Series,这里的字典即是key:value键值对。数组里每个元素都是字典类型。
import pandas as pd
dic1 =[{ "course": "英文", "id": "10001", "name":"张三", "score":"90" },
{"course":"语文", "id": "10002", "name":"李四", "score":"80" }]
serie1= pd.Series(dic1)
print(serie1[1])
print(type(serie1[1]))
#结果
{'course': '语文', 'id': '10002', 'name': '李四', 'score': '80'} <class 'dict'>
注:一般我们不通过字典数组初始化Series,因为Series和普通数组的区别在于它有显式的,且有意义的,而字典数组方式直接初始化,默认的索引和普通ndarray方式一样,即0、1这种数字型索引。除非每条记录有特定意义,通过索引标识。
访问Series
通过索引位置索引访问Series
#通过索引号或者位置索引(从0开始),以”[]”的方式访问Series。
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"}
serie1= pd.Series(dic1)
print(serie1['id'],serie1['course'])
print(serie1[1],serie1[3])
#结果
10001 英文
10001 英文
通过loc显示访问Series
#通过loc方式访问,方法类似以索引方式访问。
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"}
serie1= pd.Series(dic1)
print(serie1.loc['id'],serie1.loc['score'])
#结果
10001 90
通过iloc显示访问Series
#通过iloc方式访问,方法类似以位置索引方式访问。
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"}
serie1= pd.Series(dic1)
print(serie1.iloc[1],serie1.iloc[3])
#结果
10001 90
通过loc对Series切片
#类似ndarry,我们可以通过“[start:end]”(start即下标、end为上标)方式对数组进行切片访问,这里切片后仍然是Series。
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"
}
serie1= pd.Series(dic1)
print(serie1.loc["course":"name"])
#结果
course 英文
id 10001
name 张三
dtype: object
通过iloc对Series切片
#类似ndarry,我们可以通过“[start:end]”(start即下标、end为上标)方式对数组进行切片访问,这里切片后仍然是Series。
import pandas as pd
dic1 = {
"course": "英文",
"id": "10001",
"name": "张三",
"score": "90"
}
serie1= pd.Series(dic1)
print(serie1.iloc[1:3])
#结果
id 10001
name 张三
dtype: object
以上是关于Python数据分析pandas之series初识的主要内容,如果未能解决你的问题,请参考以下文章