zoukankan      html  css  js  c++  java
  • 数据分析--pandas的基本使用

    一、pandas概述

    1.pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的。

    2.pandas的主要功能

    • 具备对其功能的数据结构DataFrame、Series
    • 集成时间序列功能
    • 提供丰富的数学运算和操作
    • 灵活处理缺失数据

    3.python中操作方式:

    • 安装方法:pip install pandas
    • 引用方法:import pandas as pd

    4.也可以通过安装anaconda软件操作,里面包含(numpy,pandas以及Matplotlib多个库),本片文章是在anaconda3中运行!!!

    二、pandas:Series(一维)

    1.Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。

    2.创建方式:

    3.从上面操作可以知道:

    • 获取值数组和索引数组:values属性和index属性。
    • Series比较像列表(数组)和字典的组合体。

    三、pandas:Series特性  

    1.Series支持NumPy模块的特性(下标):

    • 从ndarray创建Series:Series(arr)
    • 与标量运算:sr*2
    • 两个Series运算:sr1+sr2
    • 索引:sr[0], sr[[1,2,4]]
    • 切片:sr[0:2]
    • 通用函数:np.abs(sr)
    • 布尔值过滤:sr[sr>0]
    • 统计函数:mean()sum()cumsum()

       Numpy连接:https://www.cnblogs.com/dalyday/p/9295459.html


    2.Series支持字典的特性(标签):

    • 从字典创建Series:Series(dic),
    • in运算:’a’ in sr、for i in sr
    • 键索引:sr['a'], sr[['a', 'b', 'd']] 
    • 键切片:sr['a':'c']
    • 其他函数:get('a',default = 0)等

     标签示例:

    四、pandas:整数索引 

    1.整数索引存在标签索引与下标索引,新手在这需注意下。

    2.输入下面的列子会出什么结果:

    • sr2[3] 
    • sr2[-1]

    3.从上面可知索引是整数类型,则根据整数进行数据操作时总是面向标签的。

    引入:

    • --loc属性 以标签解释
    • --iloc属性 以下标解释

    五、pandas:Series数据对齐 

     1.pandas在运算时,会按索引进行对齐然后计算。如果存在不同的索引,则结果的索引是两个操作数索引的并集。

    例:

    sr1 = pd.Series([12,23,34], index=['c','a','d'])

    sr2 = pd.Series([11,20,10], index=['d','c','a',])

    sr1+sr2

    sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])

    sr1+sr3

    图例展示:

    2.如何在两个Series对象相加时将缺失值设为0?

    sr1.add(sr3, fill_value=0)

    灵活的算术方法:add, sub, div, mul

    六、pandas:Series缺失数据

    1.缺失数据:使用NaN(Not a Number)来表示缺失数据。其值等于np.nan。内置的None值也会被当做NaN处理。

    2.处理缺失数据的相关方法:

    • dropna() 过滤掉值为NaN的行
    • fillna() 填充缺失数据
    • isnull() 返回布尔数组,缺失值对应为True
    • notnull() 返回布尔数组,缺失值对应为False

    3.过滤缺失数据:sr.dropna() 或 sr[data.notnull()]

    4.填充缺失数据:fillna(0)

    七、pandas:DataFrame

    1.概要描述:DataFrame是一个表格型的数据结构,含有一组有序的列;可以被看做是由Series组成的字典,并且共用一个索引。

    2.创建方式:

    pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})

    pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['b','a','c','d'])})

    3.csv文件读取与写入:

    • pd.read_csv('filename.csv')
    • pd.to_csv()

    八、pandas:DataFrame查看数据

    查看数据常用属性及方法:
        index				获取索引
        T					转置
        columns				获取列索引
        values				获取值数组
        describe()				获取快速统

    九、pandas:DataFrame索引和切片

    1、DataFrame有行索引和列索引。
    2、DataFrame同样可以通过标签和位置两种方法进行索引和切片。
    3、DataFrame使用索引切片:

    • 方法1.两个中括号,先取列再取行。 df['A'][0]
    • 方法2(推荐):使用loc/iloc属性,一个中括号,逗号隔开,先取行再取列

        loc属性:解释为标签
        iloc属性:解释为下标

    • 向DataFrame对象中写入值时只使用方法2
    • 行/列索引部分可以是常规索引、切片、布尔值索引、花式索引任意搭配。(注意:两部分都是花式索引时结果可能与预料的不同)
    通过标签获取:
        df['A']
        df[['A', 'B']]
        df['A'][0]
        df.loc[:,['A','B']]
        df.loc[:,'A':'C']
        df.loc[0,'A']
        df.loc[0:10,['A','C']]
    通过位置获取:
        df.iloc[3]
        df.iloc[3,3]
        df.iloc[0:3,4:6]
        df.iloc[1:5,:]
    通过布尔值过滤:
        df[df['A']>0]
        df[df['A'].isin([1,3,5])]
        df[df<0] = 0

    十、pandas:DataFrame数据对齐与缺失数据

    1.DataFrame对象在运算时,同样会进行数据对其,结果的行索引与列索引分别为两个操作数的行索引与列索引的并集

    2.DataFrame处理缺失数据的方法:

    • dropna(axis=0,where='any',…)
    • fillna()
    • isnull()
    • notnull()

     十一、pandas:其他常用方法

    pandas常用方法(适用Series和DataFrame):
        mean(axis=0,skipna=False)           #求平均值
        sum(axis=1)                         #求和
        sort_index(axis, …, ascending)	#按行或列索引排序
        sort_values(by, axis, ascending)	#按值排序
        NumPy的通用函数同样适用于pandas
        apply(func, axis=0)	               #将自定义函数应用在各行或者各列上 ,func可返回标量或者Series
        applymap(func)		       #将函数应用在DataFrame各个元素上
        map(func)		               #将函数应用在Series各个元素上
    

      十二、pandas:其他常用方法

    时间类型:
        时间戳:特定时刻
        固定时期:如2017年7月
        时间间隔:起始时间-结束时间
    Python标准库:datetime
        datetime.datetime.timedelta  # 表示 时间间隔
        dt.strftime() #f:format吧时间对象格式化成字符串
        strptime()  #把字符串解析成时间对象p:parse
    灵活处理时间对象:dateutil包
        dateutil.parser.parse('2018/1/29') 
    成组处理时间对象:pandas
        pd.to_datetime(['2001-01-01', '2002-02-02'])
    
    产生时间对象数组:date_range
        start    开始时间
        end      结束时间
        periods  时间长度
        freq     时间频率,默认为'D',可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),…

    十三、pandas:从文件读取

    1.读取文件:从文件名、URL、文件对象中加载数据

    read_csv 默认分隔符为csv
    read_table 默认分隔符为	
    read_excel 读取Excel文件

    2.读取文件函数主要参数:

    sep 指定分隔符,可用正则表达式如's+'
    header=None 指定文件无列名
    name 指定列名 index_col 指定某列作为索引
    skip_row 指定跳过某些行
    na_values 指定某些字符串表示缺失值
    parse_dates 指定某些列是否被解析为日期,布尔值或列表
    nrows 指定读取几行文件 chunksize 分块读取文件,指定块大小

    十四、pandas:写入到文件

    1.写入到文件:

    to_csv

    2.写入文件函数的主要参数:

    sep
    na_rep 指定缺失值转换的字符串,默认为空字符串
    header=False 不输出列名一行
    index=False 不输出行索引一列
    cols 指定输出的列,传入列表

    3.其他文件类型:json, XML, HTML, 数据库

    4.pandas转换为二进制文件格式(pickle):

    save
    load 
    

      

  • 相关阅读:
    jQuery .css("width")和.width()的区别
    用jquery写一个滑动TAB 例子
    D
    4 Values whose Sum is 0
    Hibernate学习之hql 与sql
    BigDecimal进行精确运算
    Date类与SimpleDateFormat类中parse()方法和format()方法
    单例模式下的懒汉和饿汉模式
    Java中Date类型详解
    Spring @Column的注解详解
  • 原文地址:https://www.cnblogs.com/dalyday/p/9297451.html
Copyright © 2011-2022 走看看