Pandas部分总结

文章目录

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 填充。

data = {'a':1, 'b':2, 'c':3}
pd.Series(data)

'''
    a    1
    b    2
    c    3
    dtype: int64

'''

data = {'a':1, 'b':2, 'c':3}
pd.Series(data, index = ['a', 'c', 'c'])

'''
    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

  • 注意:
  • 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

'''
+ 多值索引,列表里边嵌套列表

pos = [0,1,2]
s[pos]

'''
    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' = <object object at 0x0000024D9F206510>,
    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()

Pandas部分总结

; 统计函数

差分函数 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

Original: https://blog.csdn.net/weixin_45743271/article/details/120626667
Author: 名称又重复了
Title: Pandas部分总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743715/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球