Pandas基础及series对象

文章发布时间:

最后更新时间:

文章总字数:
1.1k

预计阅读时间:
5 分钟

一.pandas概述

  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据

  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征

  • Pandas 广泛应用在学术、金融、统计学等各个数据分析领域

  • Pandas 的出现使得 Python 做数据分析的能力得到了大幅度提升,它主要实现了数据分析的五个重要环节:加载数据、整理数据、操作数据、构建数据模型、分析数据

二.安装

在cmd打开命令终端后,激活conda,进入要下载pandas的环境中输入:

1
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

三.内置数据结构

  • Series

是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等。

  • DataFrame

是一种表格型数据结构,它既有行标签,又有列标签,都可以是字符串。默认都是0、1、2、3、4、5 等索引,可自定义。

四.Series

1
pandas.Series(data,index,dtype)
  • data:一组数据(可以是ndarray 类型)

  • index:数据索引标签,如果不指定,默认从 0 开始

  • dtype:数据类型,默认会自己判断

  • copy:表示对 data 进行拷贝,默认为 False

4.1 创建对象

1
2
3
4
5
6
7
8
# 创建空对象

import pandas as pd

data = pd.Series()

print(data)
print(type(data))

结果:

1
2
Series([], dtype: object)
<class 'pandas.core.series.Series'>
1
2
3
4
5
6
# 直接赋值创建
import pandas as pd

# 给一个列表或可迭代对象
s = pd.Series([1,2,3,4,5],dtype='float')
print(s)

结果:

1
2
3
4
5
6
0    1.0
1 2.0
2 3.0
3 4.0
4 5.0
dtype: float64
1
2
3
4
5
6
7
# ndarray 创建 Series 对象
import pandas as pd
import numpy as np

# 因为数组也是可迭代对象
s = pd.Series(np.array([1, 2, 3, 4]))
print(s)

结果:

1
2
3
4
5
0    1
1 2
2 3
3 4
dtype: int32
1
2
3
4
5
6
7
8
# 字典创建 Series 对象
import pandas as pd
import numpy as np

# key键传入下标,value值就传入变成元素
dic = {'name':'zhangsan','age':18,'sex':'male'}
s = pd.Series(dic)
print(s)

结果:

1
2
3
4
name    zhangsan
age 18
sex male
dtype: object
1
2
3
4
5
6
7
8
9
10
# 自身series创建对象

import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
series1 = pd.Series(data, index=index)
# 这种方法会将第一个series中数据和索引都传进来,第二个series的索引和数据都和第一个一样
# 此时更改索引只会得到缺失值,使用原来索引就是原来的值
series2 = pd.Series(series1, index=['gg', 'd', 'c', 'b', 'a'])
print(series2)

结果:

1
2
3
4
5
6
gg     NaN
d 40.0
c 30.0
b 20.0
a 10.0
dtype: float64

4.2 访问Series 数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd

# 创建一个series对象
s = pd.Series([1, 3, 5, 6, 8, 10])

# 根据下标来访问元素,这里的下标还是默认值0,1,2 ~~~
print(s[0])

# 换个行
print()

# 使用默认下标来切片,终止值不被包含
# (标签默认为0,1 ~,系统无法分清是元素还是标签,所以采用下标来访问)
print(s[:2])

结果:

1
2
3
4
5
6
7
1

0 1
1 3


dtype: int64
1
2
3
4
5
6
# 自定义标签(下标)
s1 = pd.Series([1,2,3,4,5], index=['a','b','c','d','e'])
print(s1['d'])

# 使用自定义标签切片访问,使用的是标签访问,会包含终止值
print(s1['a':'c'])

结果:

1
2
3
4
5
4
a 1
b 2
c 3
dtype: int64

这里还要注意一个之前讲列表时的细节,那就是切片访问元素时,会返回原数据类型的相同的数据类型,其中包含切片的值,也就是Seres切片之后还是返回一个Series对象,不单返回值。

4.3 遍历series元素

4.3.1 遍历index

1
2
3
4
5
6
7
8
import pandas as pd

s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

# 获取index属性(标签)
for i in s.index:
# 同时打印标签与值
print(i,s[i])

结果:

1
2
3
4
5
a 1
b 2
c 3
d 4
e 5

4.3.2 遍历values

1
2
3
4
5
6
7
import pandas as pd

s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

# 获取values属性(值)
for i in s.values:
print(i)

结果:

1
2
3
4
5
1
2
3
4
5

4.3.3 items()

1
2
3
4
5
6
7
8
9
10
11
12
13
import pandas as pd

s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

# 输出迭代器
for i in s.items():
print(i)

# 换个行
print()

for key,value in s.items():
print(key,value)

结果:

1
2
3
4
5
6
7
8
9
10
11
('a', 1)
('b', 2)
('c', 3)
('d', 4)
('e', 5)

a 1
b 2
c 3
d 4
e 5