1. pandas介绍

  • pandaspython语言的一个扩展程序库,用于数据分析
  • pandas是一个开放源码,BSD许可的库,提供高性能,易于使用的数据结构和数据分析工具
  • pandas名字衍生自术语panel data(面板数据)和python data analysis(python数据分析)
  • pandas是一个强大的分析结构化数据的工具集,基础是numpy(提供高性能的矩阵运算)
  • pandas可以从各种文件格式导入数据,例如;csv,excel,json...
  • pandas可以对各种数据进行运算操作,比如:归并,再成形,选择,还有数据清洗和数据加工特征
  • pandas的最主要数据结构是Series(一维数据)和DataFrame(二维数据),这两种数据结构足以处理金融,统计,社会科学,工程等领域里的大多数典型用例

2.Series定义

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

注意:Series类型数值会强制统一

  • values:一组数据(ndarray类型)
  • index:相关的数据索引标签

3.构造Series

  • 1.from ndarray,使用ndarray构造Series,是一个引用对象

    # 通过ndarry数组创建Series
    arr1=np.random.randint(0,10,size=5)
    # index是用来指定Series对象的显示索引,如果没有设置,则默认显示隐式索引填充(数组填充)
    s1=pd.Series(data=arr1,index=['A','B','C','D','E'])
    
  • 2.from list 使用列表构造,是一个副本对象

    #通过列表创建Series
    lis=[1,2,3,4]
    s3=pd.Series(data=lis,index=list('ABCD'))
    
  • 3.from dict,使用字典构造

    #通过字典创建Series,通过字典创建不会传递index,字典的key就是index,如果传入index,会与字典中的key匹配,不匹配,返回NaN
    #字典构造的Series.默认使用字典的key作为显示索引,values作为Series的值
    #NaN  not a number 是空数值
    user_info={
        'name':'hello',
        'age':20,
        'address':"安徽"
    }
    s4=pd.Series(data=user_info)
    #自动匹配user_info中的key
    s5=pd.Series(data=user_info,index=['name','address','A'])
    
  • 4.from scalar(标量) value

    • 使用一个标量(常量或变量)构造时,必须指定index,标量会被重复匹配到每一个index
    index=list('ABCDE')
    #会将标量6重复匹配到每一个index
    s6=pd.Series(data=6,index=index)
    

4.Series属性

属性 含义
name 返回Series对象的名字
shape 返回Series对象的形状
size 返回Series对象的元素个数
index or keys() 返回Series对象的显示索引
values 返回Series对象的所有元素值
items() Python 字典的表达式和方法来检测键 / 索引和值
s = pd.Series(data=[1,2,3], index=list('ABC'))
s.shape  #(3,)
s.index   #Index(['A', 'B', 'C'], dtype='object')
s.keys() #Index(['A', 'B', 'C'], dtype='object')
s.values   #array([1, 2, 3], dtype=int64)
s.size   #3
list(s.items()) #[('A', 1), ('B', 2), ('C', 3)]

5. Series的数学运算

  • Series对大多数Numpy的函数都是兼容的

  • 1.与非pandas对象运算 【服从广播机制原则】

    #服从广播机制
    s=pd.Series(data=[1,2,3],index=list('ABC'))
    s + 1
    
  • 2.numpy functions, numpy的函数Series也可用

    #求平方
    np.power(np.array([1,2,3]),2)
    
  • 3.Series之间的运算

    • 索引对齐原则
    • 对不齐补空值,使用add/sub/nul/div函数处理空值
    s=pd.Series(data=[1,2,3],index=list('ABC'))
    s1=pd.Series(data=np.array([2,3,4]),index=['C','A','B'])
    s+s1
    A    4
    B    6
    C    5
    dtype: int64
    
    #对不齐的补空值
    s1=pd.Series(data=np.array([2,3,4]),index=['C','A','B'])
    s2=pd.Series(data=[2,3,4],index=['A','C','D'])
    s1+s2
    A    5.0
    B    NaN
    C    5.0
    D    NaN
    dtype: float64
    

6. Series的索引和切片

显示索引 隐式索引 含义
data[0] data['语文'] 索引获取值
data[[0,2]] data[['语文','数学'] ] 列表获取值
data[0:2] data['语文':'数学'] 切片获取值
dic={ '语文':98,  '数学':100, '英语':60 }
data=pd.Series(data=dic)
data[0] 
data['语文']
data[0:2]
data['语文':'数学']
data[[0,2]]
data[['语文','英语']]

在这里插入图片描述

7. Series的常用方法

方法 含义
head() 默认前n行数据,n默认为5
tail() 默认后n行数据,n默认为5
unique() 返回去重后元素值
nunique() 返回去重后元素个数
value_counts() 求不同元素的个数
isnull() 判断数据是否为空
notnull() 判断数据是否不为空
isnull() 判断数据是否为空
notnull() 判断数据是否不为空
add(n) 每个元素加上n
sub(n) 每个元素减上n
mul(n) 每个元素乘上n
div(n) 每个元素除上n
s4=pd.Series(data=[1,2,4,6,3,5,6,6,6,4,3,2,1])
display( s4.head(),s4.tail(),s4.unique() ,s4.nunique() ,s4.isnull(),s4.notnull(),s4.add(2),s4.sub(2),s4.mul(2),s4.div(2))
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐