学习资料
Pandas名字衍生自术语”Panel Data”面板数据和”Data Analysis”数据分析两个名词的组合。在经济学中, Panel Data
是一个关于多维数据集的术语。Pandas最初应用于金融量化交易领域。
Pandas出现前Python在数据分析任务主要承担着数据采集和数据预处理的工作,对数据分析支持十分有限。Pandas的出现使Python做数据分析的能力得到大幅提升,它主要实现了数据分析的五个重要环节:加载数据、整理数据、操作数据、构建数据模型、分析数据。
Pandas是一个强大的分析结构化数据的工具集,基于NumPy库(提供高性能的矩阵运算)开发而来,可与科学计算库配合使用。在概念上更接近Excel和SQL。
数据结构
构建和处理多维数组是一项繁琐的任务,Pandas解决了这一问题。它在NumPy的 ndarray
组数基础上构建出两种不同的数据结构,分别是一维数据结构 Series
和二维数据结构 DataFrame
。
数据结构维数描述Series一维序列,带标签(索引)的一维数组,索引不限于整数,可以是字符串。DataFrame二维数据帧,一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型。既有行标签,也有列标签。
import pandas as pd
print(pd.__version__)
Series
Series结构也称为序列,是一种类似于一维数组的结构,由一组数据值 value
和一组标签组成,标签与数据值之间是一一对应的关系。
- Series是一维数据结构,维数不可改变。
- Series数据结构能够存储各种数据类型
- Series使用
name
和index
属性来描述数据值
pandas.Series(data, index, dtype, copy)
参数必填描述dataN输入的数据,可以是列表、常量、
数组等。indexN索引值,必须唯一。若无则默认为
。dtypeN数据类型,若无则会自动推导得出。copyN是否对
进行拷贝,默认为
例如:创建空序列对象
import pandas as pd
s = pd.Series()
print(s) # Series([], dtype: float64)
pandas
包一般使用别名 pd
来代替
ndarray
是NumPy中的数组类型,当 Series()
中 data
为 ndarray
时,传递的索引必须具有与数组相同的长度。若没有给 index
参数传参,默认索引值将使用 range(n)
生成。索引默认从0开始分配,范围从0到 len(data)-1
,这种设置方式又称为”隐式索引”。
import numpy as np
import pandas as pd
s = pd.Series(np.array(['a', 'b', 'c']))
print(s)
0 a
1 b
2 c
dtype: object
将 dict
字典作为输入数据时,若没有传入索引则会按照字典的键来构造索引,若传递了索引则需将索引标签与字典中的值一一对应。
import numpy as np
import pandas as pd
s = pd.Series({'x':1, 'y':2, 'z':3})
print(s)
x 1
y 2
z 3
dtype: int64
为 index
索引参数传递索引时
import numpy as np
import pandas as pd
data = {'x':10., 'y':20., 'z':30.}
index = ['z', 'x', 'a']
s = pd.Series(data, index)
print(s)
z 30.0
x 10.0
a NaN
dtype: float64
当传递的索引值无法找到与之对应的值时会使用 NaN
非数字来表示。
- 若输入数据为标量值则必须提供索引
- 标量值会按照索引的数据进行赋值并与其一一对应
import numpy as np
import pandas as pd
data = 100
index = [0, 1, 2]
s = pd.Series(data, index)
print(s)
0 100
1 100
2 100
dtype: int64
访问序列对象中元素分为两种方式:一种是位置索引访问,一种是索引标签访问。
- 此方式与
ndarray
和list
相同,使用元素自身下标。数组索引计数从0开始,表示第一个元素存储在第0个索引位置上,以此类推。
例如:通过位置或标签下标访问元素
import numpy as np
import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index)
print(s)
print(s[0]) # 位置下标
print(s['a']) # 标签下标
a 10
b 20
c 30
d 40
e 50
dtype: int64
10
10
import numpy as np
import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index)
print(s[-3:])
c 30
d 40
e 50
dtype: int64
- 序列类似固定大小的字典,将
index
中的索引标签当作key
,把序列中的元素值作为value
,通过index
索引标签来访问或修改元素。
例如:使用索引标签访问多个元素值
- 使用
index
中不包含的标签时会出发异常
import numpy as np
import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index)
idx = ['a', 'c', 'e']
print(s[idx])
a 10
c 30
e 50
dtype: int64
序列属性描述index获取
对象用以描述索引的取值范围axes以列表的形式返回所有行索引标签values以
的形式返回序列对象dtype获取序列对象的数据类型empty获取一个空的序列对象ndim获取输入数据的维度size获取输入数据的元素数量
例如:创建序列并获取属性
import numpy as np
import pandas as pd
data = np.random.randn(5)
s = pd.Series(data)
print(s)
print(s.index) # RangeIndex(start=0, stop=5, step=1)
print(s.axes) # [RangeIndex(start=0, stop=5, step=1)]
print(s.values) # [0.24913463 0.62854834 0.28542668 0.73411569 1.14845944]
print(s.dtype) # float64
print(s.empty) # False
print(s.ndim) # 1
print(s.size) # 5
方法描述head()获取前n行数据,默认显示前5行。tail()获取后n行数据,默认显示后5行。isnull()检测序列是否存在缺失值,存在则为
。notnull()检测序列是否存在缺失值,不存在则为
缺失值表示值不存在、丢失、缺少。
例如:查看序列中部分数据
import numpy as np
import pandas as pd
data = np.random.randn(5)
s = pd.Series(data)
print(s.head(3))
0 -0.317722
1 -1.051894
2 0.718421
dtype: float64
print(s.isnull())
0 False
1 False
2 False
3 False
4 False
dtype: bool
DataFrame
import pandas as pd
df = pd.DataFrame({
"index": [0, 1, 2, 3],
"name":["小明", "小华", "小亮", "小红"],
"age":[28, 29, 30, 26],
"gender":["男", "女", "男", "女"],
"rating":[3.4, 4.6, 3.5, 2.9]
})
print(df)
index name age gender rating
0 0 小明 28 男 3.4
1 1 小华 29 女 4.6
2 2 小亮 30 男 3.5
3 3 小红 26 女 2.9
异构数据表中,数据以行和列的形式来表示,每一列表示一个属性,每一行表示一个条目的信息。
每列标签描述数据的类型
ColumnTypenameStringageintegergenderStringratingFloat
DataFrame中行可被看作由Serials组成的字典,只是为行中每个数据增加了一个列标签。DataFrame其实是从Series基础上演化而来。数据分析中DataFrame应用非常广泛,因为描述数据更加清晰直观。
import pandas as pd
df = pd.DataFrame({
"Regd.No": [1000, 1001, 1002, 1003, 1004],
"Name":["Steve", "Mathew", "Jose", "Patty", "Vin"],
"Marks%":[86.29, 91.63, 72.90, 69.23, 88.30]
})
print(df)
Regd.No Name Marks%
0 1000 Steve 86.29
1 1001 Mathew 91.63
2 1002 Jose 72.90
3 1003 Patty 69.23
4 1004 Vin 88.30
DataFrame结构类似Excel表格,同Series一样DataFrame自带行标签索引,默认为隐式索引,从0开始递增。行标签与DataFrame中的数据项一一对应。
Original: https://blog.csdn.net/JunChow520/article/details/121970047
Author: JunChow520
Title: Pandas
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/696376/
转载文章受原作者版权保护。转载请注明原作者出处!