Pandas

学习资料

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使用 nameindex属性来描述数据值
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()datandarray时,传递的索引必须具有与数组相同的长度。若没有给 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

访问序列对象中元素分为两种方式:一种是位置索引访问,一种是索引标签访问。

  • 此方式与 ndarraylist相同,使用元素自身下标。数组索引计数从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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球