04.pandas

本文详细介绍了Pandas库的基础操作,包括数据读取、索引、赋值、排序、DataFrame的运算、文件I/O、缺失值处理以及数据离散化,旨在帮助读者掌握Python数据分析的核心工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1  pandas的基本介绍

2  基本操作

2.1  索引操作

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

2.1.2  结合local| iloc 使用索引

2.1.3  组合索引

 3  赋值操作

4  排序

 5  DataFrame 的运算

        1.给一列数据加上某个数

        2.给一列数据减去某个数

        3. 逻辑运算(< ,> ,| ,&)

        4. 逻辑运算函数

        5. 统计运算

        6. 自定义运算

 6  pandas的画图

 7  文件的读取与存储

7.1  CSV 读取

7.1.1  read_csv

7.1.2  to_csv

7.2  HDF5

7.2.1  read_hdf 和 to_hdf

8  缺失值删除

8.1  如何处理nan(float)

9  数据离散化

9.1  为什么要进行离散化

9.2  什么是数据的离散化

9.3  使用工具


1  pandas的基本介绍

  • 是基于Numpy构建的含有更高级数据结构和工具的数据分析包,现已经取代R成为数据分析的主要工具,它最初就是用来作为金融数据分析工具而开发的。

2  基本操作

  • #读取文件
    • data = pd.read_csv("csv文件地址")
  • #删除一些列,让数据更简单些,再去做后面的操作
    • data = data.drop(["ma5","ma10","ma20"],axis=1)

2.1  索引操作

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

  • #直接使用行列索引名字的方式(先列后行)
    • data["列名"]["行名"]

2.1.2  结合local| iloc 使用索引

  • #使用loc:只能指定行列索引的名字(先行后列)

    • data.loc["行1":"行2","列"]
  • #使用iloc 可以通过索引的下标去获取

  • #获取前n行数据的m列的结果

    • data.iloc[:n,:m]

2.1.3  组合索引

  • #推荐使用loc 和 iloc 来获取的方式
    • data.loc[data.index[行的索引],["列1","列2",...]]
    • data.iloc[行索引,data.columns.get_indexer(['列1','列2',...])]
import pandas as pd
import numpy as np
# 随机创建一个二维数组
ndarray = np.random.normal(0,5,(10,5))
#采用DataFrame进行读取
date = pd.DataFrame(ndarray)
# 进行loc取值
date[:]
date.loc[:6,:2]
#type(date)
#help(pd.DataFrame)

 3  赋值操作

#直接 ndarray['列名'(或者索引)] = 值 即可
# todo 如果ndarray里面没有这个列的话会自动在最后一列让添加
date[0] = 1000
date['0'] = 1400
date

 

4  排序

  • #排序有两种方式,一种对于索引进行排序,一种对于内容进行排序
  1. 使用dataframe.sort_values(by=,ascending=)

    • 单个键或者多个键进行排序,默认升序
    • 【ascending】False 降序
    • 【ascending】Ture 升序

 

date.sort_values(by = [0,1,2],ascending=True).head()

 

        2.使用series.sort_index()进行排序

  • date['object'].sort_values(ascending=True)
  • date['object'].sort_index()
date[3].sort_index(ascending=False).head()
date[3].sort_values(ascending=True).head()

 

 5  DataFrame 的运算

 

        1.给一列数据加上某个数

  • add(other)

        2.给一列数据减去某个数

  • sub(other)
date[0].sub(5).head()
date[0].add(5).head()

        3. 逻辑运算(< ,> ,| ,&)

  • 直接 对象+逻辑运算 即可实现
  • 其中需要注意:使用| 和 & 是存在优先级问题,需要使用小括号解决

        4. 逻辑运算函数

  • date.query(查询字符串(运算逻辑))
  • date['object'].isin([值1,值2,....])#判断是否存在值1,值2...,返回False/True

        5. 统计运算

  • date.describe() #计算平均值、标准差、最大值、最小值
  • 统计函数
  • countdescribe
    sum求和
    mean平均值
    median中位数
    min最小值
    max最大值
    mode众数
    abs绝对值
    prod乘积
    std标准差
    var方差
    idxmax最大值的索引的值
    idxmin最小值的索引的值
    cumsum计算1/2/3/.../n个数的和
    cummax计算1/2/3/.../n个数的最大值
    cummin计算1/2/3/.../n个数的最小值
    cumprod计算1/2/3/.../n个数的积
    注意:对于单个函数的运用,坐标轴还是按照这些默认为“columns”(axis=0,default),如果要对行“index”需要指定(axis=1)

 

date.describe()

        6. 自定义运算

  • apply(func,axis=0)
    • func:自定义函数
    • axis=0:默认是列,axis=1为行进行运算
date[[3]].apply(lambda x: x.max()-x.min(),axis=0)

 6  pandas的画图

  1. pandas.DataFrame.plot
  • DataFrame.plot(x=None,y=None,kind='line')
    • x: 横轴的值
    • y: 纵轴的值
    • kind: 画图的类型(line(默认),bar,barh,hist,pie,scatter)

     2.pandas.Series.plot

  • Series.plot(x=None,y=None,kind='line')
  • 用法和DataFrame一样
date[1].cumsum().plot()

 

 7  文件的读取与存储

 

  • 常见的格式如下
    Format TypeData DescriptionReaderWriter
    textCSVread_csvto_csv
    textJSONread_jsonto_json
    textHTMLread_htmlto_html
    textLocal clipboardread_clipboardto_clipboard
    binaryMS Excelread_excelto_excel
    binaryHDF5 Formatread_hdfto_hdf
    binaryFeather Formatread_featherto_fearther
    binaryParquet Formatread_parquetto_parquet
    binaryMsgpackread_msgpackto_msgpack
    binaryStataread_statato_stata
    binarySASread_sas
    binaryPython Pickle Formatread_pickleto_pickle
    SQLSQLread_sqlto_sql
    SQLGoogle Big Queryread_gbqto_gbq

 

7.1  CSV 读取

7.1.1  read_csv

  • pandas.read_csv(filepath_or_buffer,usecols)
    • filepath_or_buffer:文件路径
    • usecols: 指定读取的列名,列表形式

7.1.2  to_csv

  • DataFrame.to_csv(path_or_buf=None,sep=',',columns=None,header=True,index=True,mode='w',encoding=None)
    • path_or_buf:bin存的路径
    • sep:按什么方式分割
    • columns:按什么次序
    • mode:'w':重写,'a':追加
    • index: 是否写进行索引
    • header: 是否写进列索引
    • encoding: 编码方式

7.2  HDF5

7.2.1  read_hdf 和 to_hdf

  • HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame
  • pandas.read_hdf(path_or_buffer,key=None,**kwargs) -【从h5文件当中读取数据】
    • path_or_buffer:文件路径
    • key:读取的键
    • return:Thesellected object
  • DataFrame.to_hdf(path_or_buf,key,**kwargs)

8  缺失值删除

8.1  如何处理nan(float)

  • 判断数据是否为NaN
    • pd.isnull(df)
    • pd.notnull(df)
  • 处理方式:
    1. 存在缺失值nan,并且是np.nan
    • np.any()#有一个值为True,就返回True
    • np.all()#有一个为False,就返回False
    • 删除纯在缺失值的: 对象.dropna(axis='rows')
      • 注意:不会修改原数据,需要接受返回值
    • 替换缺失值:fillna(value,inplace=True)
      • value:替换成的值
      • inplace:True会修改原数据,False:不替换修改原数据,生成新的对象
    2.不是缺失值nan,有默认标记的
    • 先替换'?'为np.nan
      • df.replace(to_replace=,value=)
      • to_replace:替换前的值
      • value:替换后的值

9  数据离散化

9.1  为什么要进行离散化

  • 连续属性离散的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具

9.2  什么是数据的离散化

  • 连续属性的离散型就是在连续属性的值域划分为若干个离散的区间,最后用不同的符号或者整数值代表落在每个子区间中的属性值。

    9.3  使用工具

#对数据进行分组将数据分组,一般会与value_counts搭配使用,统计每组的个数

 -  pd.qcut(data,bins)
- series.value_counts()#统计分组次数
- pd.cut(data,bins)#自定义分组


本人基本都是个人笔记,非常希望有大佬提出错误和改进之处,但大佬轻喷哈!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广寒学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值