栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas部分总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas部分总结

文章目录
  • Pandas 总结
    • 基本数据类型
      • 介绍
      • Series
        • 构造方法:
        • Series的切片操作
        • Series 数学运算
      • Dataframe
        • 构造方法:
        • Dataframe 中的行列操作
          • 访问某一行
            • df.loc[index_name]
            • df.iloc[index]
          • 访问某一列
            • df[column_name]
          • 访问多行
            • df.loc[ : ] or df.loc[ [ ] ]
            • df.iloc[ : ] or df.iloc[ [ ] ]
          • 访问多列
            • df[ : ]
        • Dataframe常用的属性或方法
          • 属性
            • `df.T`
            • `df.axes`
            • `df.dtypes`
            • `df.empty`
            • `df.ndim`
            • `df.shape`
            • `df.size`
            • `df.values`
          • 方法
            • `df.head()`
            • `df.tail()`
    • 利用Pandas进行数据分析
      • 读入数据
        • `data = pd.read_filetype(file_path)`
      • 基本信息
        • `data.info()`
        • `data.describe()`
        • `data.head(n = 5)`
        • `data.tail(n = 5)`
      • 数据分析
        • 分组
          • `data.groupby(by = )`
            • 使用
          • `se.value_counts()`
        • 排序
            • 按标签排序 `df.sort_index(axis = 1,ascending = True)`
            • 按实际值排序 `df.sort_values(by = [], ascending = True)`
        • 字符串文本函数 `series.str.function()`
        • 统计函数
          • 差分函数`series.pct_change()`
          • 协方差函数`series.cov()`
          • 相关性函数`series.corr()`
          • 数据排名`series.rank()`
        • 数据访问
          • 迭代访问
            • `df.iteritems()` 类似字典
            • `df.iterrows()`
            • `df.itertuples()`
          • 索引 和 选择数据函数
            • `df.iloc()`
            • `df.loc()`
            • `df.ix()`
            • `df.column_name`

Pandas 总结

import pandas as pd

基本数据类型 介绍

与 ndarray 数据类型不同,这两种数据类型都是可变的

  • Series:带标签的一维数组,标签名是 index
  • Dataframe:带标签且大小可变的二维表格结构
Series 构造方法:
pd.Series(
    data=None,
    index=None,
    dtype=None,
    name=None,
    copy=False,
    fastpath=False,
)
  • data:列数据

    • 数据可以是任意数据类型

    • 字典作为参数,字典键作为index,值作为填充的列数据;若指名index,则会按照index中字典键的顺序去填充;若对应数据没有该键,则用NaN 填充。

      # 例1
      data = {'a':1, 'b':2, 'c':3}
      pd.Series(data)
      # out
      '''
      	a    1
      	b    2
      	c    3
      	dtype: int64
      
      '''
      
      # 例2 按照字典键的顺序去填充
      data = {'a':1, 'b':2, 'c':3}
      pd.Series(data, index = ['a', 'c', 'c'])
      
      # out
      '''
          a    1
          c    3
          c    3
          dtype: int64
      '''
      
  • index:行索引(Dataframe中的是columns列索引),default = np.arange(n)

  • dtype:数据类型

  • name:Series 的名字,有了名字的Series作为Dataframe的参数的时候,列名就是它的名字

    se = pd.Series(data = [1, 2, 3], index = range(3),name = 'number')#, 
    df = pd.Dataframe(se)
    df.columns
    #out :Index(['number'], dtype='object')
    
  • 注意:

    • Series 是 一列数据
Series的切片操作
  • 可以像ndarray类型的数据一样去切片

  • Examples:

    • 中括号 里面参数是 index 或者 索引

      s = pd.Series([0, 1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e', 'f'])
      print(s)
      s[0]
      s['a']
      '''
      	out:
      		a    0
              b    1
              c    2
              d    3
              e    4
              f    5
      		dtype: int64
      
      		0
      		0
      '''
      
    • 参数是切片

      • 可以用index值切片

        s['a':'e']
        
        '''
            out:
                a    0
                b    1
                c    2
                d    3
                e    4
                dtype: int64
        
        '''
        
      • 也可以用索引切片

        s[0:5]
        
        '''
            out:
                a    0
                b    1
                c    2
                d    3
                e    4
                dtype: int64
        
        '''
        
      • 多值索引,列表里边嵌套列表

        # In
        pos = [0,1,2]
        s[pos]
        # Out
        '''
            a    0
            b    1
            c    2
            dtype: int64
        
        '''
        
        
Series 数学运算

Series 中可以使用numpy的几乎所有函数

  • obj.function()

    s.mean()
    s.std()
    s.unique() # 返回值唯一数,并且拼接成新的数组
    s.sum()
    
  • 多个Series的相加操作,有所不同:对应index 相加,不匹配用NaN 填充

    Series由于存在行标签,所以会根据两个运算书的标签自动对齐后进行计算。

    s = pd.Series([0, 1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e', 'f'])
    s[1:] + s[:-1]
    '''
    	out:
            a    NaN
            b    2.0
            c    4.0
            d    6.0
            e    8.0
            f    NaN
            dtype: float64
        
    
    '''
    
  • s.value_count()可以实现在某列中按值的类别记录个数(一列数据)

Dataframe 构造方法:
pd.Dataframe(
    data=None,
    index: 'Optional[Axes]' = None,
    columns: 'Optional[Axes]' = None,
    dtype: 'Optional[Dtype]' = None,
    copy: 'bool' = False,
)
  • data:可以使用各种数据进行创建

    • 二维数组(列表,ndarray)

      data = np.array([[1, 2], [3, 4]])
      pd.Dataframe(data)
      '''
      	out:
                  0	1
              0	1	2
              1	3	4
      '''
      
    • 字典 Key 始终是作为 columns

      • from 行

        d = {'a':1,'b':1,'c':1}
        f = {'a':1,'b':1,'d':1}
        df = pd.Dataframe(data = [d, f]) #用列表拼起来
        df
        
        '''
        	out:
                a	b	c	d
            0	1	1	1.0	NaN
            1	1	1	NaN	1.0
        '''
        
        
      • from 列

        d = {'one':pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two':pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
        df = pd.Dataframe(d)
        df
        '''
        	out:
        		one	two
            a	1.0	1
            b	2.0	2
            c	3.0	3
            d	NaN	4
        
        
        '''
        
Dataframe 中的行列操作

注意:都不是方法,而是一种访问方式 []

访问某一行 df.loc[index_name]
  • [] 里面是index名称,或者index列表(获取多个)
  • 可以名称切片
df.iloc[index]
  • index 索引
  • 可以索引切片
访问某一列 df[column_name]
  • 可以使用列名,或者列名列表,但是不能用 列名 切片
  • 可以用列的索引切片
访问多行 df.loc[ : ] or df.loc[ [ ] ] df.iloc[ : ] or df.iloc[ [ ] ] 访问多列 df[ : ] Dataframe常用的属性或方法 属性 df.T df.axes df.dtypes df.empty df.ndim df.shape df.size df.values 方法 df.head() df.tail() 利用Pandas进行数据分析 读入数据 data = pd.read_filetype(file_path)
  • 返回 Dataframe 类型的数据

  • txt 文件 用 pd.read_csv读取

基本信息 data.info()
  • 查看数据类型,列名,行列数,非空值统计
data.describe()
  • 数值类型的数据数学信息
    • count
    • mean
    • std
    • min,max
    • 四个分位点
data.head(n = 5)
  • 查看数据的前几行信息,默认五行
data.tail(n = 5)
  • 查看数据的前几行信息,默认五行
数据分析 分组 data.groupby(by = )
data.groupby(
    by=None,
    axis=0,
    level=None,
    as_index: 'bool' = True,
    sort: 'bool' = True,
    group_keys: 'bool' = True,
    squeeze: 'bool' = ,
    observed: 'bool' = False,
    dropna: 'bool' = True,
) -> 'DataframeGroupBy'
 

key_parameters:

  • by = :
    • = function:每个index值 会被函数调用
    • = ndarray
    • = list
    • = dict
  • axis = :按照 0 (列),1(行)来进行划分
    • 0
    • 1
  • dropna = :If True, and if group keys contain NA values, NA values together
    with row/column will be dropped.
使用

返回的是一个**‘DataframeGroupBy’** 的对象

  • 对象.数学方法

    • sum()
    • count() dtype = ‘int’
    • mean()
    • std()
  • 对象.画图方法

    • 数据透视表:选择groupby选出的 部分列 作为 横纵坐标画图

      (x, y, z)

      groupby_df.pivot_table(
          values=None,
          index=None,
          columns=None,
          aggfunc='mean', 
          fill_value=None,
          margins=False,
          dropna=True,
          margins_name='All',
          observed=False,
      ) -> 'Dataframe'
      
      • values:column_name,选某一列的值作为 z
      • index:column_name,x
      • columns:column_nma,y
      • aggfunc:对 values 进行对应的数据处理
    • 普通图

      • groupby_df.plot(x,y,kind = '',title,xticks,yticks,xlim,ylim,xlabel,ylabel)

        kind = :可以指名 画图类型,bar,line等等

      • groupby_df.plot.scatter()

      • groupby_df.plot.bar()

se.value_counts()
  • 可以实现在某列中按值的类别记录个数,对于当前问题实现过程相对更简单
排序 按标签排序 df.sort_index(axis = 1,ascending = True)
  • 对数据按照 Dataframe 中的 index 进行排序
  • axis
    • = 1 行
    • = 0 列
  • ascending:
    • = True : 升序
    • = False :降序
按实际值排序 df.sort_values(by = [], ascending = True)
  • by
    • = [columns1, columns2,…]:按照给定的列先后进行分组
  • ascending
    • = True 升序
    • = False 降序
字符串文本函数 series.str.function()

统计函数 差分函数series.pct_change() 协方差函数series.cov() 相关性函数series.corr() 数据排名series.rank() 数据访问
N = 5
df = pd.Dataframe({'X':np.linspace(0, stop = N-1, num = N),
                  'Y':np.random.rand(N),
                  'C':np.random.choice(['Low','Medium','High'],N).tolist()})
df
迭代访问
 dir(df) 其中一部分

 'items',
 'iteritems',
 'iterrows',
 'itertuples',
df.iteritems() 类似字典
for key ,value in df.iteritems():
    print(key ,value)
  • key
  • value
df.iterrows()
for row_index, row in df.iterrows():
    print(row_index ,row)
df.itertuples()
for row in df.itertuples():
    print(row)
索引 和 选择数据函数 df.iloc() df.loc() df.ix() df.column_name
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号