• pandas是什么以及pandas的三种数据结构Series、DataFrame、MultiIndex的创建方式函数代码


    一、pandas概述

    pandas是2008年WesMcKinney开发出的专门用于数据挖掘的开源python库,以Numpy为基础,借助numpy模块在计算方面性能高的优势,基于matplotlib,能够简便的画图,具有独特的数据结构

    pandas特点

    • 图表的可读性强
    • 数据处理能力便捷
    • 读取文件方便
    • 封装了Matplotlib、Numpy的画图和计算

    二、pandas数据结构

    pandas中共有三种数据结构,分别为

    • Series:是一维数据结构
    • DataFrame:是二维的表格型数据结构
    • MultiIndex:是三维的数据结构

    2.1 Series

    Series是一个类似于一维数组的数据结构,能够保存任何类型的数据,如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成

    1.series创建

    • series创建:pd.Series(data=None, index=None,dtype=None):创建带索引的一维数组
      • data:传入的数据,可以是ndarray、list等
      • index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引
      • dtype:数据的类型
    • 创建
    1. 指定数据内容,默认索引
    2. 给定数据内容,指定索引
    3. 通过字典数据创建
    1. import pandas as pd
    2. import numpy as np
    3. pd.Series(np.arange(0, 50, 10)) # 创建[0,50)步长为10的等差数组数据,索引默认
    4. pd.Series([1, 2, 3, 4.3, 5.2], index=[1,2,3,4,5]) # 指定数据和索引
    5. name = pd.Series({'name1':'XX', 'name2':'XY', 'name3':'YY', 'name4':'YX'}) # 通过字典数据创建
    6. name

    2.series属性 

    •  Series属性:为了方便操作Series对象中的索引和数据,Series中提供了两个属性
      • index
      • values
    1. name = pd.Series({'name1':'XX', 'name2':'XY', 'name3':'YY', 'name4':'YX'}) # 通过字典数据创建
    2. name.index # 获取索引
    3. name.values # 获取数据值
    4. data = pd.Series([1, 2, 3, 4.3, 5.2], index=[1,2,3,4,5]) # 指定数据和索引
    5. data.index
    6. data.values

    2.2 DataFrame

    DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引

    1. DataFrame创建 

    • 行索引:表明不同行,横向索引,叫index,0轴,axis=0
    • 列索引:表名不同列,纵向索引,叫columns,1轴,axis=1
    • DataFrame创建:pd.DataFrame(data=None, index=None, columns=None)
      • data:传入的数据
      • index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
      • columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引
    1. pd.DataFrame(np.random.randn(3, 5)) # 3行5列
    2. num = np.random.randint(50, 100, (3, 5))
    3. num
    4. # 传入标签索引
    5. column = ['第一列', '第二列', '第三列', '第四列', '第五列'] # 列标签索引
    6. # ind = ['第一行', '第二行', '第三行'] # 行标签索引
    7. ind = ['第' + str(i) + '行' for i in range(num.shape[0])] # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
    8. data = pd.DataFrame(num, columns=column, index=ind)
    9. data

     2. DataFrame属性方法

    • shape:获取数组形状,几行几列
    • index:获取行索引列表
    • columns:获取列索引列表
    • values:获取数组中的值
    • T:数组转置
    • head(n):显示前n行数据,若不补充参数,则默认5行
    • tail(n):显示后n行数据,若不补充参数,则默认5行
    1. data
    2. data.shape
    3. data.index
    4. data.columns
    5. data.values
    6. data.T
    7. data.head(2)
    8. data.tail(1)

    3. DatatFrame索引的设置

    ①修改行列索引,必须全部修改,不能修改单个索引

    1. # 修改索引,必须全部修改
    2. ind = ['第_' + str(i) + '_行' for i in range(num.shape[0])] # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
    3. data.index = ind
    4. data
    5. data.index[1] = '第二行'
    6. data # 报错:索引不支持可变操作,即不能单个修改

    ②重设索引

    • reset_index(drop=False):设置新的下标索引
      • drop:默认为False,不删除原来索引,若为True,删除原来的索引值
    1. data.reset_index() # 重置索引,默认drop=False,不删除原来索引
    2. data.reset_index(drop=True) # 重置索引,drop=True,删除原来索引

    ③以某列值设置为新的索引

    • set_index(keys, drop=True)
      • keys : 列索引名成或者列索引名称的列表
      • drop : 布尔类型,默认为True,当做新的索引,删除原来的列
    1. time = pd.DataFrame({'day': [365, 365*2, 365*3], 'month':[12*(i + 1) for i in range(3)], 'year': [1, 2, 3]})
    2. time
    3. time.set_index('year', drop=False) # 设置year为索引,drop=False表示不删除原来year那一列
    4. time.set_index(['year', 'month']) # 设置多个索引

    2.3 MultiIndex

    MultiIndex是三维的数据结构,多级索引(层次化索引),是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引

    1. multiIndex特性 

    查看索引如下,多级或分层索引对象

    • index属性
      • names:levels的名称
      • levels:每个level的元组值
    1. time0 = time.set_index('year', drop=False) # 设置year为索引,drop=False表示不删除原来year那一列
    2. time0.index # 获取year索引
    3. time = time.set_index(['year', 'month']) # 设置多个索引
    4. time.index # 获取year和month索引
    5. time.index.names # index的names属性
    6. time.index.levels # index的levels属性

    2. multiIndex和panel创建

    ①MultiIndex创建

    • pd.MultiIndex.from_arrays(arrays, sortorder=None, names=None):用于将数组arrays转为多索引multiIndex,多维数组作为参数,高维指定高层索引,低维指定低层索引
      • arrays:列表或序列类型,每个array-like都会为每个数据点提供一个级别的值, len(arrays)是级别数
      • sortorder:整数或无,排序级别(必须按该级别按字典顺序排序)
      • names:str的列表/序列,可选,用来指定索引中级别的名称
      • 返回:多索引MultiIndex

     对比前面设置的多个索引如下

    1. data = [['XY', 'YX', 'XX', 'YY'], [20, 18, 22, 19]] # 两层索引
    2. pd.MultiIndex.from_arrays(data, names=('姓名', '年龄')) # names指定索引名

    其他补充

    • pd.MultiIndex.from_tuples():元组的列表作为参数,每个元组指定每个索引(高维和低维索引)
    • pd.MultiIndex.from_product():一个可迭代对象的列表作为参数,根据多个可迭代对象元素的笛卡尔积(元素间的两两组合)进行创建索引
    • pd.MultiIndex.from_frame:根据现有的数据框来直接生成
    • groupby():通过数据分组统计得到
    • pivot_table():生成透视表的方式来得到

     ②panel创建(已弃用)

    • pd.Panel(data=Noneitems=Nonemajor_axis=Noneminor_axis=None):用来存储3维数组的Panel结构
      • data : ndarray或者dataframe
      • minor_axis : 索引或类似数组的对象,axis=2
      • major_axis : 索引或类似数组的对象,axis=1
      • items : 索引或类似数组的对象,axis=0

    学习导航:http://xqnav.top/ 

  • 相关阅读:
    亚马逊,速卖通,国际站卖家如何找到真实干净的买家账号测评补单
    计算机组成原理-存储器概念
    洛谷P5142 区间方差 题解
    ISO9001认证大致流程
    springboot大学生兼职网站毕业设计源码311734
    Spark-机器学习(4)回归学习之逻辑回归
    javaEE飞机航班信息查询网站系统
    WAIC|九章云极DataCanvas公司携因果学习技术成果精彩亮相!
    Jenkins系列之pipeline语法介绍与案例
    没有五十瓶红牛我是不会告诉你——面试中应该如何正确谈薪
  • 原文地址:https://blog.csdn.net/qq_43874317/article/details/128025831