zoukankan      html  css  js  c++  java
  • Pandas入门 (一)

    一、什么是Pandas?

    一个开源的Python类库:用于数据分析、数据处理、数据可视化

    ●高性能
    ●容易使用的数据结构
    ●容易使用的数据分析工具

    很方便和其它类库一起使用:

    ●numpy: 用于数学计算
    ●scikit-learn: 用于机器学习

    二、Pandas数据读取

    Pandas需要先读取表格类型的数据,然后进行分析

    1.读取csv文件

    import pandas as pd
    file = "./xxx.csv" # 文件路径
    rat = pd.read_csv(file) # 读取数据
    rat.head() #查看前几行数据
    rat.shape #查看数据形状(行数,列数)
    rat.columns #查看列名
    rat.index #查看索引列
    rat.dtypes #查看每列的数据类型
    

    2.读取txt文件,自己指定分隔符,列名

    import pandas as pd
    file = "./xxx.txt"
    data = pd.read_csv(
          file,
          sep = "	",
          header = None,
          names = ['a','b','c']
    )
    

    3.读取excel文件

    import pandas as pd
    file = "./xxx.xlsx"
    data = pd.read_excel(file)
    

    4.读取MySQL数据库

    import pandas as pd
    import pymysql
    conn = pymysql.connect(
          host = '127.0.0.1',
          user = 'root',
          password = '123'
          database = 'test'
          charset = 'utf8'
    )
    mysql_page = pd.read_sql("select * from data", con = conn)
    mysql_page
    

    三、Pandas数据结构

    DataFrame:二维数据,整个表格,多行多列

    DataFrame是一个表格型的数据结构

    ●每列可以是不同的值类型(数值、 字符串、布尔值等)
    ●既有行索引index,也有列索引columns
    ●可以被看做由Series组成的字典

    根据多个字典序列创建dataframe

    Series: 一维数据,一行或一列

    1.创建一个Series

    import pandas as pd 
    s = pd.Series([1,'a',5.2,7]) # 得到的s最左侧是索引,右侧是数据
    s.index # 获取索引
    s.values # 获取数据
    

    2.创建一个带有标签索引的Series

    s = pd.Series([1,'a',5.2,7],index = ['a','b','c','d'])
    

    3.使用Python字典创建Series

    sdata = {'A':3500,'B':7200,'C':1600,'D':5000}
    s = pd.Series(sdata)
    

    4.根据索引标签查询数据

    从DataFrame中查询出Series

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

    1.查询列

    2.查询行

    四、Pandas数据查询的五种方法

    Pandas查询数据的几种方法

    df.loc方法,根据行、列的标签值查询
    df.iloc方法,根据行、列的数字位置查询
    df.where方法
    df.query方法

    .loc既能查询,又能覆盖写入,强烈推荐!

    Pandas使用df.Iloc查询数据的方法

    使用单个label值查询数据
    使用值列表批量查询
    使用数值区间进行范围查询
    使用条件表达式查询
    调用函数查询

    注意

    ●以上查询方法,既适用于行,也适用于列
    ●注意观察降维dataFrame>Series>值

    数据导入

    数据处理

    数据查询

    1.使用单个label值查询数据

    行或者列,都可以只传入单个值,实现精确匹配

    2.使用值列表批量查询

    3.使用数值区间进行范围查询

    4.使用条件表达式查询

    5.调用函数查询

    五、Pandas新增数据列

    1.直接赋值法

    2.df.apply方法

    沿DataFrame的轴应用函数
    传递给函数的对象是序列对象,其索引是DataFrame的索引(axis=0)或DataFrame的列(axis=1)。

    3.df.assign方法

    4.按条件选择分组分别赋值

    六、Pandas数据统计函数

    1.汇总类统计

    2.唯一去重

    3.相关系数和协方差

    协方差:衡量同向反向程度,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X, Y反向运动,协方差越小说明反向程度越高。
    相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大

    七、Pandas缺失值处理

    Pandas使用这些函数处理缺失值:

    isnull和notnull:检测是否是空值,可用于df和Series
    dropna:丢弃、删除缺失值

    axis:删除行还是列,{0 or 'index', 1 or 'columns'}, default 0
    how:如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
    inplace:如果为True则修改当前df, 否则返回新的df

    fillna:填充空值

    value:用于填充的值,可以是单个值,或者字典(key是列名, value是值)
    method:等于fill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
    axis:按行还是列填充,{0 or 'index', 1 or 'columns'}
    inplace:如果为True则修改当前df,否则返回新的df

    源数据:

    步骤1

    步骤2


    步骤3

    步骤4

    步骤5

    步骤6

    八、Pandas数据排序

    Series的排序:

    Series.sort_values(ascending=True, inplace=False)

    参数说明: .

    ascending: 默认为True升序排序,为False降序排序
    inplace: 是否修改原始Series

    DataFrame的排序:

    DataFrame.sort_ values(by, ascending=True, inplace=False)

    参数说明:

    by:字符串或者List<字符串>,单列排序或者多列排序
    ascending: bool或者List, 升序还是降序,如果是list对应by的多列
    inplace: 是否修改原始DataFrame

    九、Pandas字符串处理

    Pandas的字符串处理:

    使用方法:先获取Series的str属性,然后在属性上调用函数;
    只能在字符串列上使用,不能数字列上使用; .
    Dataframe.上没有str属性和处理方法
    Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;



    十、Pandas索引

    1.设置索引

    2.使用index会提升查询性能

    ●如果index是唯一的,Pandas会使用哈希表优化,查询性能为O(1);
    ●如果index不是唯一的,但是有序,Pandas会使用二分查找算法,查询性能为O(logN);
    ●如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N);
    ●Categoricallndex,基于分类数据的Index,提升性能;
    ●Multilndex, 多维索引,用于groupby多维聚合后结果等;
    ●Datetimelndex, 时间类型索引,强大的日期和时间的方法支持;

  • 相关阅读:
    Factory——工厂方法
    Subsets II
    【算法设计】快速计算积分图
    Win8驱动的兼容性问题
    Matplotlib快速上手
    Pandas —— (8)数据读取
    Pandas —— (7)数据分组
    Pandas —— (6)多个DataFrame的合并、连接、去重、替换
    Pandas —— (4)常用数学、统计方法
    Pandas —— (3)数据查看、转置、添加、修改、删除、运算(对齐)、排序
  • 原文地址:https://www.cnblogs.com/nnadd/p/13778519.html
Copyright © 2011-2022 走看看