• 转自蚂蚁学python :pandas 使用方


    Pandas数据读取

    数据查看

    查看数据的形状,返回(行数、 列数) data.shape

    查看列名列表 data.columns

    查看索引列 data.index

    查香每列的数据类型 data.dtypes

    数据结构

    Series

    Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。索引和DataFrame一样,但只有行索引,没有列索引,因为是一维数据。

    DataFrame

    DataFrame是一个表格型的数据结构,●每列可以是不同的值类型(数值、字符串、布尔值等)

    ●既有行索引lindex,也有列索引|columns

    ●可以被看做由Series组成的字典

    从DataFrame中查询出Series

    ●如果只查询一行、一列,返回的是pd.Series

    ●如果查询多行、多列,返回的是pd.DataFrame

    查列:单列 - data[‘列名’] 多列 - data[[‘列名1’,’列名2’]]

    查行:单行 - data.loc[1] 多行 - data.loc[1:3] 包含末元素

    设置索引:data.set_index(‘Time’,inplace = True) inplace为Ture就是不创建新对象,修改原数据,False就是不动原数据创建一个新对象!

    使用数值区间进行范围查询:data.loc[‘01-01’:’01-05’ , ‘3’:’6’] 包含开始,也包括结束

    判断列值,结果组成新列

    数据排序
    Series的排序:
    Series.sort_ values(ascending=True, inplace=False)

    参数说明:

    ●ascending:默认为True升序排序,为False降序排序

    ●inplace: 是否修改原始Series

    例:df[" aqi"]. sort_ values (ascending=False)

    DataFrame的排序:
    DataFrame.sort_values(by, ascending=True, inplace=False)

    参数说明:

    ●by:字符串或者List<字符串>, 单列排序或者多列排序

    ●ascending: bool或者List, 升序还是降序,如果是list对应by的多列

    ●inplace:是否修改原始DataFrame

    例:#两个字段都是降序

    df.sort_values (by= [“aqiLevel”,”bWendu” ],ascending= [True,False])

    字符串处理
    Pandas的字符串处理:

    1.使用方法:先获取Series的str属性, 然后在属性上调用函数;

    2.只能在字符串列上使用,不能数字列上使用;

    1. Dataframe上没有str属性和处理方法

    2. Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;

    Pandas的axis参数
    ●axis=0或者"index":

    如果是单行操作,就指的是某一行

    如果是聚合操作,指的是跨行cross rows。例:求平均值mean,求和

    指定了按哪个axis,就是这个axis要动起来(类似被tor遍历,其它的axis保持不动

    Df.mean(axis=0) 得到每列的平均值,得到一行。

    Df.mean(axis=1) 得到每行的平均值,得到一列。

    ●axis=1或者"columns":

    .如果是单列操作,就指的是某一列

    如果是聚合操作, 指的是跨列cross columns。

    Pandas的index索引
    1、更方便的数据查询;

    Df.set_index(‘ID’,inplace=True,drop=False)

    使用index的查询方法

    df. loc [500]. head (5)

    使用column的condition查询方法

    df. loc[df["ID"] == 500]. head()

    2、使用index可以获得性能提升;

    ●如果index是唯一的, Pandas会使用哈希表优化,查询性能为0(1);

    ●如果index不是唯一的, 但是有序, Pandas会使用二分查找算法, 查询性能为O(logN);

    ●如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N);

    所以有查询操作时,需要排序。

    3、自动的数据对齐功能;

    包括series 和dataframe。

    可以对齐部分,可执行语句

    无对齐部分,为Nan

    4、更多更强大的数据结构支持;

    ●Categoricallndex, 基于分类数据的Index,提升性能;

    ●Multilndex, 多维索引,用于groupby多维聚合后结果等;

    ●DatetimeIndex, 时间类型索引,强大的日期和时间的方法支持;

    索引递增的——df.index.is_monotonic_increasing

    索引是否唯一——df.index.is_unique

    Pandas批量拆分Excel与合并Excel
    1、读取文件

    2、将一个大Excel等分拆成多个Excel

    Df.iloc方法,利用数字索引进行拆分

    3、合并多个小Excel到一个大Excel

    Groupby 分组统计
    1、分组使用聚合函数做数据统计

    B列不是数字,就忽略了

    2、For遍历group

    3、实战,天气温度

    MultiIndex 分层索引
    使用Groupby聚合后,可能会产生两个索引。可以表达更高维度数据的形式。

    更方便的进行数据筛选,

    Series的分层索引MultiIndex

    2、Series有多层索引Multilndex怎样筛选数据?

    3、DataFrame的多层索引Multilndex

    4、DataFrame有多层索引Multilndex怎样筛选数据?

    ●元组(key1,key2)代表筛选多层索引,其中key1是索引第一级, key2是第二级,比如key1=JD, key2=2019- 10-02

    ●列表[key1,key2]代表同一层的多个KEY,其中key1和key2是并列的同级索引,比如key1=JD, key2=BIDU

    Map、apply、applymap 数据转换

    1. map:只用于Series,实现每个值->值的映射;

    2. apply:用于Series实现每个值的处理,用于Dataframe实现某个轴的Series的处理;

    3. applymap:只能用于DataFrame,用于处理该DataFrame的每个元素;

    itertuples
    对DataFrame对象进行遍历很方便的函数

    iterrows() : 将DataFrame迭代成(index ,series)

    iteritems(): 将DataFrame迭代成(列名,series)

    itertuples(): 将DataFrame迭代成元组

    getattr() 直接获取元组内指定的值

    通过列明索引访问对应的值

    通过Index 索引获取对应的值

    Concat数据合并函数
    pd.concat(object,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False)

    https://blog.csdn.net/qq_42535601/article/details/86523689

    ●objs: 一个列表,内容可以是DataFrame或者Series, 可以混合

    ●axis: 默认是0代表按行合并,如果等于1代表按列合并

    ●join: 合并的时候索引的对齐方式,默认是outer join, 也可以是inner join

    ●ignore_ index: 是否忽略掉原来的数据索引

    Join数据合并函数
    https://blog.csdn.net/qq_42535601/article/details/86528094

    Merge数据合并函数
    merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

    ●left, right: 要merge的dataframe或者有name的Series

    ●how: Join类型, left, 'right, 'outer, 'inner'

    ●on: join的key, left和right都需要有这个key

    ●left_on: left的df或者series的key

    ●right_on: right的df或者series的key

    ●left_index, right_index: 使用index而不是普通的column做join

    ●suffixes: 两个元素的后缀,如果列有重名,自动添加后缀,默认是(‘_x,'_y)

    https://blog.csdn.net/qq_21840201/article/details/80727504

    Stack、pivot——数据透视
    将列式数据变成二维交叉形式,便于分析,叫做重塑或透视。
    ————————————————
    版权声明:本文为CSDN博主「team39」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/team39/article/details/112971461

  • 相关阅读:
    来深圳两月有余
    Recording Audio on Android with Examples
    How to Use the Zmanim API
    KosherJava Zmanim API / Library
    Wt, C++ Web Toolkit
    TreeFrog Framework : High-speed C++ MVC Framework for Web Application
    QDjango, a Qt-based C++ web framework
    Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask)
    CivetWeb. Embedded C/C++ web server
    Tufão
  • 原文地址:https://www.cnblogs.com/vmsky/p/16395026.html
Copyright © 2020-2023  润新知