上一篇文章介绍了 Numpy 第三方库的使用,今天介绍 Python 的另外一个数据分析相关的第三方库 Pandas。
更多点击:Python学习日志目录
Pandas 的优势是:
数据结构非常快速高效、数据处理功能比较智能、文件存储功能非常方便、科研和商业应用很广泛。
安装 Pandas
pip install pandas -i https://pypi.douban.com/simple
导入 Pandas 模块,同样起一个别名pd,方便后面使用
import pandas as pd
Pandas 的数据结构:
分两种,Series 和 DataFrame
Series 数据
只有一列数据
索引 | 数据 |
---|---|
A | 13 |
C | 11 |
D | 15 |
X | 20 |
DataFrame 数据
有多列数据
索引 | 数据1 | 数据2 | 数据3 |
---|---|---|---|
0 | Pulp Fiction | 1994 | 6 |
1 | The Shawshank Redemption | 1994 | 4 |
2 | The Godfather | 1972 | 7 |
本文主要介绍 Pandas 里的 Series 数据,后面会介绍到 DataFrame 数据的知识。
创建 Series 数据
data = pd.series([1,2,3,4]) print(data)
也就是 Series 数据里面填充的数据是列表格式的。
运行结果:
0 1
1 2
2 3
3 4
dtype: int64
其中第一列是索引,第二列是存储的数据。
读取里面的数据和索引的方法:
print(data.values) print(data.index)
输出结果:
[1 2 3 4]
RangeIndex(start=0, stop=4, step=1)
创建特殊索引的 Series 数据
如果不想使用数字索引的话,可以在创建的时候,设定索引的方式:
data = pd.Series([1,2,3,4],index=['a','b','c','d']) print(data) print(data.values) print(data.index)
输出结果:
a 1
b 2
c 3
d 4
dtype: int64
[1 2 3 4]
Index(['a', 'b', 'c', 'd'], dtype='object')
这种就类似于字典,一个索引对应一个数据。
修改 Series 数据的索引方式
比如对于一个已经存在的 Series 数据,我们想要修改它的索引方式:
data = pd.Series([1,2,3,4]) data.index = ['a','b','c','d'] print(data)
输出结果:
a 1
b 2
c 3
d 4
dtype: int64
获取 Series 数据的长度,跟列表一样
len(data)
获取单个数据:
data = pd.Series([1,2,3,4]) data.index = ['a','b','c','d'] print(data['b'])
运行结果:2
获取多个数据:
data = pd.Series([1,2,3,4]) data.index = ['a','b','c','d'] print(data[['a','b','d']])
运行结果:
a 1
b 2
d 4
dtype: int64
获取连续多个数据(切片的方式):
data = pd.Series([1,2,3,4]) data.index = ['a','b','c','d'] print(data['a':'c']) print(data[0:2])
运行结果:
a 1
b 2
c 3
dtype: int64
a 1
b 2
dtype: int64
注意,特殊索引的 Series 数据也可以用数字索引读取,而使用切片读取的时候,特殊索引跟数字索引结果是不一样的。
如上面的结果,从'a'到'c',是包含'a'位和'c'位的数据;而从0到2,是不包含2号位的数据的。
统计 Series 数据中,重复数据的个数
data = pd.Series([1,2,3,4,2,5,1,4,2]) print(data.value_counts())
运行结果:
2 3
4 2
1 2
5 1
3 1
dtype: int64
判断有没有某个索引值
data = pd.Series([1,2,3,4],index=['a','b','c','d']) print('a' in data)
运行结果:
True
前面提到 Series 特殊索引类似于字典(当然字典是无序数据类型)
我们可以直接通过字典来创建一个 Series 数据
dict_data = {'Anna':16,'Nina':11,'Elena':3} data = pd.Series(dict_data) print(data)
运行结果:
Anna 16
Nina 11
Elena 3
dtype: int64
如果创建 Series 数据的时候,索引值比数据多,也可以创建成功
这时候,多出来的索引值对应的数据为 NaN,相当于没有数据的意思。NaN 是 Not a Number 的缩写。
dict_data = {'Anna':16,'Nina':11,'Elena':3} indexs = ['Anna','Nina','Elena','Fiona'] data = pd.Series(dict_data, index=indexs) print(data)
运行结果:
Anna 16.0
Nina 11.0
Elena 3.0
Fiona NaN
dtype: float64
可以用 .isnull() 来判断哪些索引值不存在数据
print(data.isnull())
运行结果:
Anna False
Nina False
Elena False
Fiona True
dtype: bool
同样也可以用 .notnull() 来判断哪些索引值有数据
print(data.notnull())
运行结果跟上面正相反。
同样对 Series 数据进行计算
print(data * 2)
运行结果:
Anna 32.0
Nina 22.0
Elena 6.0
Fiona NaN
dtype: float64
Series 数据可以直接使用 Numpy 进行计算(当然需要提前引入 numpy 模块)
import numpy as np print(np.square(data))
运行结果:
Anna 256.0
Nina 121.0
Elena 9.0
Fiona NaN
dtype: float64
Series 数据之间进行可以进行计算,会根据索引值进行对应计算
dict_data_1 = {'Anna':16,'Nina':11,'Elena':3} dict_data_2 = {'Anna':7,'Nina':8,'Elena':9,'Fiona':10} indexs = ['Anna','Nina','Elena','Fiona'] data1 = pd.Series(dict_data_1, index=indexs) data2 = pd.Series(dict_data_2, index=indexs) print(data2) print('----') print(data1 + data2)
运行结果:
Anna 7
Nina 8
Elena 9
Fiona 10
dtype: int64
----
Anna 23.0
Nina 19.0
Elena 12.0
Fiona NaN
dtype: float64
注意,如果其中一个 Series 的某个索引值对应的数据是 NaN,那么对应计算的时候,计算结果还是 NaN.
可以给 Series 数据起一个名称,也可以给索引值起一个名称
data.name = 'Girls Data' data.index.name = 'Girls' print(data)
运行结果:
Girls
Anna 16.0
Nina 11.0
Elena 3.0
Fiona NaN
Name: Girls Data, dtype: float64
因为内容比较多,所以 Pandas 的 DataFrame 数据将会在下一篇文章来介绍。
下一篇:Python 数据分析模块 Pandas 之 DataFrame 数据
上一篇:Python 数据分析第三方库 Numpy 的安装和使用
- 相关文章 -
Python 数字与数字型运算 - 2020-09-08
Python 基础知识之数据类型 - 2020-09-07
Python 学习中非常好用的编辑器 Sublime Text 3 - 2020-09-07
Python 基础知识之变量 - 2020-09-03
Python 详细安装步骤图解 - 2020-09-01
Python 数据分析模块 Pandas 之 DataFrame 数据 - 2020-02-09
Python 数据分析模块 Pandas 之 Series 数据 - 2020-02-05
Python 数据分析第三方库 Numpy 的安装和使用 - 2020-02-03
- 文章评论 -
- 最新评论[0条评论] -
版权所有©逍遥峡谷 - 星际中心超自然局 · 地球总部 |
逍遥峡谷 ·
酷品优选
Copyright©Interstellar Central Occult Agency (I.C.O.A)
本局纯属虚构,如有雷同,纯属巧合