python必备库 学习笔记 pandas(一)

pandas

  • 专门用于数据挖掘的开源python库
  • 以numpy为基础,借助numpy模块在计算方面性能高的优势
  • 基于matplotlib,能够简便的画图
  • 提供独特的数据结构—DataFrame、Panel、Series

pandas的优势

  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib,numpy库,便于画图和计算

DataFrame

pandas核心数据结构—DataFrame

  • DataFrame是具有行索引和列索引的二维数组

创建DataFrame

直接通过二维数组创建DataFrame,会生成默认索引的DataFrame
在这里插入图片描述

DataFrame的结构

DataFrame对象不仅由行索引,又有列索引,是一个具有行列索引的二维数组

  • 行索引,表示不同行的横向索引,叫做index
  • 列索引,表示不同列的纵向索引,叫做columns
    在这里插入图片描述

DataFrame的属性

DataFrame.shape

返回DataFrame的行列数(a,b),a表示行数,b表示列数
在这里插入图片描述

DataFrame.index

返回DataFrame的行索引
在这里插入图片描述

DataFrame.columns

返回DataFrame的列索引
在这里插入图片描述

DataFrame.values

返回DataFrame里的数据
在这里插入图片描述

DataFrame.T

返回DataFrame的转置
在这里插入图片描述

DataFrame的方法

DataFrame.head()

默认返回DataFrame的前五行,不足五行的直接返回
在这里插入图片描述
传入需要取的行数,如我想取7行,DataFrame.head(7)即可
在这里插入图片描述

DataFrame.tail()

默认返回DataFrame的最后五行,不足五行的直接返回
在这里插入图片描述
可以传入需要取的行数,如需要取倒数7行,则DataFrame.tail(7)
在这里插入图片描述

DataFrame索引设置

DataFrame索引只能整体修改,即只支持行索引或列索引整体修改,不支持行索引或列索引某个元素单独修改

修改DataFrame的行索引
  1. 创建DataFrame时,传入列表赋值给index
    在这里插入图片描述
  2. 用一个新列表对DataFrame.index重新赋值即可完成修改,
    在这里插入图片描述
修改DataFrame的列索引
  1. 创建DataFrame时,传入一个列表对DataFrame.columns进行赋值
    在这里插入图片描述
  2. 用一个新列表对DataFrame.columns重新赋值即可完成修改
    在这里插入图片描述
重设索引

DataFrame.reset_index(drop=False)

  • 设置新的索引
  • 默认drop值为false,即不删除原来索引,True则删除原来的索引
  • 常用于某行或某几行数据被删掉

直接使用会将原索引存进DataFrame中
在这里插入图片描述
传入参数drop=True,则会删除之前的index
在这里插入图片描述

将某列值设置为索引

DataFrame.set_index(keys,drop=False)

  • keys:列索引名称或列索引名称的列表
  • drop:默认值为True,删除原索引,如设置为False则会保留原索引

将列一设置为新索引
在这里插入图片描述
将列一,列二设置为新索引
在这里插入图片描述

DataFrame索引操作

DataFrame不能像numpy那样直接通过索引获取数据

直接使用列行索引(先列后行)

直接使用列行索引来访问某一个元素
在这里插入图片描述

按名字索引

使用DataFrame.loc来获取某一个元素
使用方式DataFrame.loc[‘name1’][‘name2’] 或 DataFrame.loc[‘name1’,‘name2’]
在这里插入图片描述

按数字索引

使用DataFrame.iloc来获取某一个元素
使用方式DataFrame.iloc[行标][列标]
在这里插入图片描述

组合索引

使用DataFrame.ix可以直接使用数字和名字的混合索引
在这里插入图片描述
使用DataFrame.loc混合index使用组合索引
在这里插入图片描述
使用DataFrame.iloc和DataFrame.columns.get_indexer(‘列名’)
在这里插入图片描述

DataFrame赋值操作

  1. 对列赋值
  • 直接对某列赋值会修改该列的值,在这里插入图片描述
  • 若被赋值的列不存在则DataFrame会新增一列
    在这里插入图片描述
  1. 对元素赋值

对存在元素赋值会修改元素的值,对不存在元素赋值会报错
在这里插入图片描述

DataFrame排序

对内容排序

使用DataFrame.sort_values(by=‘列名’,ascending=True)对内容进行排序

  • 单个键或多个键进行排序
  • 默认(ascending=True)升序,ascending=False则表示降序

对单个键pop升序排列
在这里插入图片描述
对单个键pop降序排列
在这里插入图片描述
对两个键pop和year进行降序排列,优先比较pop如果pop值相等就比较year值
在这里插入图片描述

对索引排序

DataFrame.sort_index()对索引进行排序
在这里插入图片描述

DataFrame运算

算术运算
  1. DataFrame.add(number)或DataFrame+number
  • 将DataFrame的某列或整个DataFrame加上某个数字
    在这里插入图片描述
  1. DataFrame.sub(number)或DataFrame-number
  • 将DataFrame的某列或整个DataFrame减去某个数字
    在这里插入图片描述
逻辑运算

逻辑运算符< > | &
用>运算符筛选某列大于某个值的数据,<用法与>类似
| 是或 &是且,常与><结合起来运用

筛选出pop值大于2的数据
在这里插入图片描述
筛选出的数据可以直接用DataFrame查看
在这里插入图片描述
筛选出pop大于2且year小于2002
在这里插入图片描述
查看筛选出来的结果
在这里插入图片描述 逻辑运算函数

  1. query(str) 查询字符串
    DataFrame.query(’需要查询的语句‘)

    筛选出pop大于2且year小于2002
    在这里插入图片描述

  2. isin(values) 判断一组数是否为values里的值

    判断pop列中值是否是2.4或3.2
    在这里插入图片描述
    查看筛选出来的结果
    在这里插入图片描述

统计运算
  1. DataFrame.describe()
    获取DataFrame常用的统计指标
  2. DataFrame.sum()
    对DataFrame每列进行求和
  3. DataFrame.max()
    获取DataFrame每列的最大值
  4. DataFrame.min()
    获取DataFrame每列的最小值
  5. DataFrame.mean()
    获取DataFrame每列的平均数
  6. DataFrame.median()
    获取DataFrame每列的中位数
  7. DataFrame.var()
    获取DataFrame每列的方差
  8. DataFrame.std()
    获取DataFrame每列的标准差
  9. DataFrame.idxmax()
    获取DataFrame每列的最大值的索引
  10. DataFrame.idxmin()
    获取DataFrame每列的最小值的索引
  11. 累计统计函数
函数名 作用
cumsum 计算前1/2/3/…/n个数的和
cummax 计算前1/2/3/…/n个数的最大值
cummin 计算前1/2/3/…/n个数的最小值
cumprod 计算前1/2/3/…/n个数的积

了解更多关于DataFrame DataFrame常用操作大全

自定义运算

apply(func,axis=0)

  • func:自定义函数
  • axis:=0,默认是列,=1表示行

自定义一个对列最大值最小值求和的函数
在这里插入图片描述

MultiIndex

用多列值作为索引时的索引,称为 多级索引对象或分层索引对象
在这里插入图片描述

属性

names

返回levels的名称
在这里插入图片描述

levels

以元组形式返回evel的值在这里插入图片描述

Serires

一个带索引的一位数组,可以是DataFrame的一行或一列
取DataFrame的一行
在这里插入图片描述
取DataFrame的一列
在这里插入图片描述

Series的属性

series.index

返回series的index值
在这里插入图片描述

series.values

返回series的value值
在这里插入图片描述

创建Series

  • 只指定内容,会使用默认索引
    在这里插入图片描述
  • 指定索引,生成的series索引就为指定的索引
    在这里插入图片描述
  • 通过字典创建,字典的键作为series的索引,字典的值作为series的值
    在这里插入图片描述

Series排序

对内容进行排序

series.sort_values(ascending=False)
默认对series值进行升序排列,设为ascending=True即为降序排列
在这里插入图片描述

对索引进行排序

series.sort_values()对series的索引进行排列
在这里插入图片描述
了解更多关于Series Series对象常用操作大全

pandas 画图

pandas.DataFrame.plot(x=None,y=None,kind=‘line’)

  • x label or position, default None,指定x轴
  • y label or position, default None,指定y轴
  • kind str
    • ‘line’ : line plot (default)#折线图
    • ‘bar’ : vertical bar plot#条形图
    • ‘barh’ : horizontal bar plot#横向条形图
    • ‘hist’ : histogram#柱状图
    • ‘box’ : boxplot#箱线图
    • ‘pie’ : pie plot#饼图
    • ‘scatter’ : scatter plot#散点图 需要传入columns方向的索引

画year和pop的折线图
在这里插入图片描述
画year和pop的散点图
在这里插入图片描述

pandas文件读取与存储

csv文件的读取

pandas.read_csv(path=,usecols=[],names=[])

  • path:需读取文件的所在路径
  • usecols:指定读取需要的列
  • names:没有字段的csv文件需要指定字段
    直接读取整个csv文件
    在这里插入图片描述
    指定读取文件的板块编码 板块 公司家数 平均价格 涨跌额 涨跌幅 总成交量 总成交金额
    在这里插入图片描述

csv文件的存储

DataFrame.to_csv(path=,columns=,index=,mode=,header=)

  • path:存储文件到的路径
  • columns:需要存储的DataFrame列
  • index:是否存储索引值,=False表示不存储索引值,=True表示存储索引值
  • mode:文件写入模式,=‘a’表示追加,=‘w’表示写入,不懂可以查看python 文件
  • header:是否需要写入字段,=False表示不写入,=True表示写入

hdf5文件的介绍

hdf5文件读取和存储都需要指定一个键,值为要存储的DataFrame,所以hdf5是一个存储三位数据的文件

hdf5文件的读取

pandas.read_hdf5(path=,key=,**kwargs)

  • path:需读取文件所在的路径
  • key:读取的键
  • mode:打开文件的模式

hdf5文件的存储

DataFrame.to_hdf5(path=,key=,**kwargs)

  • path:文件存储的路径
  • key:存储的键

hdf5的优点

  • hdf5存储时支持压缩,使用的方式blosc,是速度最快的,同时pandas也默认支持
  • 使用压缩可以提高磁盘利用率,节省空间
  • hdf5是跨平台的,可以轻松迁移到hadoop上

json文件的读取

pandas.read_json(path=,orient=,lines=False)

  • path:需读取文件所在的路径
  • orient:读取进来的文件以什么样的形式展示,一般为‘records’
  • lines:是否按行读取json文件,默认=False表示不按行读取,=True表示按行读取

json文件的存储

DataFrame.to_json(path)

  • path:需存储文件到的路径
  • orient:以什么样的形式存储文件,一般为‘records’
  • lines:是否按行存储json文件,默认=False表示不按行存储,=True表示按行存储

未完待续

发布了85 篇原创文章 · 获赞 158 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Late_whale/article/details/104417640