夜的独白

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、Pandas简介

Pandas是一个专门用于数据分析的开源Python库,在做相关统计分析和决策时,pandas都是一项重要的基础工具。它以NumPy为基础,不仅使Pandas兼容性更强,也更高效。

Pandas
中有两种独特的数据结构:Series和DataFrame,这两种数据结构设计初衷是用于关系型或带标签的数据。用它们管理与SQL关系型数据库和Excel工作表具有类似特征的数据会非常方便。

本文参考书籍:

Python数据分析实战( by Fabio Nelli)
Python数据分析(by Armando Fandango)
利用Python进行数据分析(by Wes McKinney )

本文不涉及过多细节,力求将Pandas包含的主要功能通过思维导图清晰地展现出来,在工作时可以根据思维导图获得Intuition, 再去找相关的代码详情。

二、Get Some Intuition

直观地了解两种数据结构最好的方式就是看下他们长啥样:

1. Series

    import pandas as pd
    
    ser = pd.Series([5, 6, 7, 8], index=['a', 'b', 'c', 'd'])
    print(ser)

在这里插入图片描述

2. DataFrame

    import pandas as pd
    frame = pd.DataFrame({'color': ['white', 'red', 'green', 'red', 'green'],
                          'object': ['pen', 'pencil', 'pencil', 'ashtray', 'pen'],
                          'price1': [5.56, 4.2, 1.3, 0.56, 2.75],
                          'price2': [4.75, 4.12, 1.6, 0.75, 3.15]})
     print(frame)

在这里插入图片描述

三、思维导图

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190107152655202.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1NjQ1Ng,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190107152348216.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1NjQ1Ng
,size_16,color_FFFFFF,t_70)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190107152405211.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1NjQ1Ng==,size_16,color_FFFFFF,t_70)

四、部分功能的代码演示

1.数据拼接

    #np数组的拼接
    array1 = np.array([[1,2], [3,4]])
    array2 = np.array([[5,6], [7,8]])
    array = np.concatenate([array1, array2], axis=1)
    # array = np.array([[1,2,5,6], [3,4,7,8]])
    # Series对象的拼接,DataFrame与这个类似
    ser1 = pd.Series(np.ones(3), index=[1,2,3])
    ser2 = pd.Series(np.zeros(3), index=[4,5,6])
    ser3 = pd.concat([ser1, ser2], axis=0)
    ser4 = pd.concat([ser1, ser2], axis=1)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190107163413910.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1NjQ1Ng==,size_16,color_FFFFFF,t_70)

2.数据映射,相当于Excel的vlookup函数

    frame = pd.DataFrame({'color': ['white', 'red', 'yellow'],
                          'item': ['ball', 'pen', 'pencil']})
    price = {'ball': 5, 'pen': 10, 'pencil': 2}
    frame['price'] = frame['item'].map(price)

在这里插入图片描述

3.数据聚合GroupBy

    # 第一步,选择分组依据,可以传入多列
    frame = pd.DataFrame({'color': ['white', 'red', 'green', 'red', 'green'],
                          'object': ['pen', 'pencil', 'pencil', 'ashtray', 'pen'],
                          'price1': [5.56, 4.2, 1.3, 0.56, 2.75],
                          'price2': [4.75, 4.12, 1.6, 0.75, 3.15]})
    group = frame.groupby(frame['color'])
    print(group)
    # output:<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x000002414987E080>
    
    #第二步,对分组数据进行聚合
    group_mean = group.mean()
    print(group_mean)
    # output:        price1  price2
    #        color
    #        green   2.025   2.375
    #        red     2.380   2.435
    #        white   5.560   4.750
    
    #第三部,选择所需要的列
    result = group_mean['price1']
    
    #一行代码完成三步操作
    result = frame['price1'].groupby(frame['color']).mean()
    print(result)
    # output:
    # color
    # green    2.025
    # red      2.380
    # white    5.560
    # Name: price1, dtype: float64

4.数据透视表

pd.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean’,
fill_value=None, margins=False, dropna=True, margins_name=‘All’)
对应Excel的数据透视表,values是值,index是行,columns是列,aggfunc是聚合函数,行和列可以用列表传入多个值。

    frame = pd.DataFrame({'color': ['white', 'red', 'green', 'red', 'green'],
                          'object': ['pen', 'pencil', 'pencil', 'ashtray', 'pen'],
                          'price1': [5.56, 4.2, 1.3, 0.56, 2.75],
                          'price2': [4.75, 4.12, 1.6, 0.75, 3.15]})
    print(pd.pivot_table(frame, columns='color', aggfunc=np.sum))

在这里插入图片描述

在这里插入图片描述

posted on 2021-07-06 16:05  夜的独白  阅读(351)  评论(0)    收藏  举报