轩小陌的Python笔记-Pandas 核心数据类型

本文详细介绍了Pandas中的核心数据类型Series和DataFrame。Series是一种类似字典的一维数组,由数据和索引组成,支持多种构造方式和数学运算。DataFrame是二维表格数据结构,包含多列不同数据类型的列,具有行和列索引。文章讨论了它们的构造、属性、运算、访问方式及聚合函数等关键概念。
摘要由CSDN通过智能技术生成

Pandas-核心数据类型

一、什么是Pandas

  • Pandas 是 Python 语言的一个扩展程序库,用于数据分析。
  • Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。
  • Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
  • Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。
  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。

二、Series

Series是一种类似于字典(dict-like)的一维数组(array-like)的对象,由下面两个部分组成:

  • values:一组数据(ndarray类型)
  • index:相关的数据索引标签
import numpy as np
import pandas as pd

1. 构造Series:pd.Series(data, index)

index用来指定Series对象的显示索引,如果没有显示设置索引,则默认使用隐式(数组索引)索引填充。

1.1 From ndarray:使用ndarray构造,得到一个引用对象
arr1 = np.random.randint(0, 10, size=5)
print(arr1)
>>输出结果:
[4, 0, 3, 5, 1]

s1 = pd.Series(data=arr1)
print(s1)
>>输出结果:
0    4
1    0
2    3
3    5
4    1
dtype: int32

s2 = pd.Series(data=arr1, index=['A','B','C','D','E'])
print(s2)
>>输出结果:
A    4
B    0
C    3
D    5
E    1
dtype: int32

# 注意:使用ndarray创建的Series是一个引用对象,当原数组中的值发生改变,Series也会随之改变
arr1[0] = 100
print(s1)
>>输出结果:
0  100
1    0
2    3
3    5
4    1
dtype: int32
From List:使用列表构造,得到一个副本对象
l1 = [1,2,3,4]
s3 = pd.Series(data=l1, index=list('ABCD'))
print(s3)
>>输出结果:
A    1
B    2
C    3
D    4
dtype: int64

# 注意:使用列表创建的Series是一个副本对象,当原列表中的值发生改变,Series不会改变
l1[0] = 100
print(li)
>>输出结果:
[100, 2, 3, 4]

print(s3)
>>输出结果:
A    1
B    2
C    3
D    4
dtype: int64
From dict:使用字典构造
# 字典构造的Sereis,默认使用字典的key作为Series的显示索引,valeus作为Series的值
user_info = {
   
    'name': 'aaa',
    'age': 20,
    'address': 'A'
}

s4 = pd.Series(data=user_info)
print(s4)
>>输出结果:
name       aaa
age         20
address      A
dtype: object

# 如果在使用字典构造Series时传入了index,那么要确保index与字典中的键相同,否将无法获得到值,得到一个空值NaN
s5 = pd.Series(data=user_info, index=['A','B','C'])
print(s5)
>>输出结果:
A    NaN
B    NaN
C    NaN
dtype: object

s6 = pd.Series(data=user_info, index=['name','address','A'])
print(s6)
>>输出结果:
name       aaa
address      A
A          NaN
dtype: object
From scalar value:使用一个标量(常量或变量)构造时,必须指定index,标量会被重复匹配到每一个index
index = list('ABCDE')
s1 = pd.Series(data=6, index=index)
print(s1)
>>输出结果:
A    6
B    6
C    6
D    6
E    6
dtype: int64

2. Series属性

  • name 返回Series对象的名字
  • shape 返回Series对象的形状
  • size 返回Series对象的元素个数
  • index 返回Series对象的显示索引
  • values 返回Sereis对象的所有元素值

注意:在设置Series的index时,避免用以上关键字作为index标签

s = pd.Series(data=[1,2,3], index=list('ABC'))
print(s)
>>输出结果:
A    1
B    2
C    3
dtype: int64

s1 = pd.DataFrame(pd.Series(data=[1,2,3], index=list('ABC'),name='轩小陌'))
print(s1)
>>输出结果:
   轩小陌
A    1
B    2
C    3

print(s.shape)
>>输出结果:
(3,)

print(s.index)
>>输出结果:
Index(['A', 'B', 'C'], dtype='object')

print(s.values)
>>输出结果:
array([1, 2, 3], dtype=int64)

print(s.size)
>>输出结果:
3
3. Sereis的数学运算

Series对大多数NumPy的函数都是兼容的

3.1 与非pandas对象运算,服从广播机制原则
s = pd.Series(data=[1,2,3], index=list('ABC'))
print(s)
>>输出结果:
A    1
B    2
C    3
dtype: int64

print(s + 1)
>>输出结果:
A    2
B    3
C    4
dtype: int64

arr1 = np.array([1,2,3])
print(s + arr1)
>>输出结果:
A    2
B    4
C    6
dtype: int64
3.2 NumPy functions
arr1 = np.power(np.array([1,2,3]), 2)
result = np.power(s,2)
print(result)
>>输出结果:
A    1
B    4
C    9
dtype: int64
3.3 Series之间运算
  1. 索引对齐原则
s = pd.Series(data=[1,2,3], index=list('ABC'))
print(s)
>>输出结果:
A    1
B    2
C    3
dtype: int64

s1 = pd.Series(data=np.array([2,3,4]), index=['C','A','B'])
print(s1)
>>输出结果:
C    2
A    3
B    4
dtype: int32

print(s + s1)
>>输出结果:
A    4
B    6
C    5
dtype: int64

s2 = pd.Series(data=[2,3,4], index=['A','C','D'])
print(s2)
>>输出结果:
A    2
C    3
D    4
dtype: int64

print(s1 + s2)
>>输出结果:
A    5.0
B    NaN
C    5.0
D    NaN
dtype: float64
  1. 索引对不齐会得到空值, 可以使用add\sub\mul\div函数处理空值后再相加
s2 = pd.Series(data=[2,3,4], index=['A','C','D'])
print(s2)
>>输出结果:
A    2
C    3
D    4
dtype: int64

print(s1 + s2)
>>输出结果:
A    5.0
B    NaN
C    5.0
D    NaN
dtype: float64

三、DataFrame

DataFrame是一个二维的表格型数据结构,可以看做是由Series组成的字典(共用同一个索引)。
DataFrame由按一定顺序排列的【多列】数据组成,每一列的数据类型可能不同。
设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

  • 行索引:index
  • 列索引:columns
  • 值:values(numpy的二维数组)

1. 构造DataFrame

pd.DataFrame(data, index, columns, copy=False)

  • data=None 用于构造DataFrame的数据

  • index=None, columns=None, 行列索引

  • dtype=None, 数据类型

  • copy=False

data = np.random.randint(0, 100, size=(3,4))
index = ['tom','lucy','alex']
columns = ['语文','数学','物理','化学']

data = pd.DataFrame(data=data, index=index, columns=columns)
print(data)
>>输出结果:
     语文  数学  物理  化学
tom   63   66   79   15
lucy  13   91   24<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值