数据分析处理库-Pandas基础-下篇

在这里插入图片描述

数据分析处理库-Pandas基础-下篇

1 SAC*Pandas 分组模式及其对象

  • SAC 指的是分组操作中的split-apply-combine过程,其中
    • split 基于某一些规则,将数据拆成若干组
    • apply 对每一组独立地使用函数
    • combine 指将每一组的结果组合成某一类数据结构

1.1groupby对象

  • 学生分组
import pandas as pd
df = pd.read_csv('./data/learn_pandas.csv')
df.head(4)
School Grade Name Gender Height Weight Transfer Test_Number Test_Date Time_Record
0 Shanghai Jiao Tong University Freshman Gaopeng Yang Female 158.9 46.0 N 1 2019/10/5 0:04:34
1 Peking University Freshman Changqiang You Male 166.5 70.0 N 1 2019/9/4 0:04:20
2 Shanghai Jiao Tong University Senior Mei Sun Male 188.9 89.0 N 2 2019/9/12 0:05:22
3 Fudan University Sophomore Xiaojuan Sun Female NaN 41.0 N 2 2020/1/3 0:04:08
df.groupby(['School','Gender'])['Height'].mean()
School                         Gender
Fudan University               Female    158.776923
                               Male      174.212500
Peking University              Female    158.666667
                               Male      172.030000
Shanghai Jiao Tong University  Female    159.122500
                               Male      176.760000
Tsinghua University            Female    159.753333
                               Male      171.638889
Name: Height, dtype: float64
df.groupby(['School','Grade','Gender'])['Gender'].count()
#根据学校和年纪及性别,统计男女人数
School                         Grade      Gender
Fudan University               Freshman   Female     8
                                          Male       1
                               Junior     Female     9
                                          Male       3
                               Senior     Female     9
                                          Male       2
                               Sophomore  Female     4
                                          Male       4
Peking University              Freshman   Female     7
                                          Male       6
                               Junior     Female     6
                                          Male       2
                               Senior     Female     5
                                          Male       3
                               Sophomore  Female     4
                                          Male       1
Shanghai Jiao Tong University  Freshman   Female     8
                                          Male       5
                               Junior     Female    15
                                          Male       2
                               Senior     Female    14
                                          Male       8
                               Sophomore  Female     4
                                          Male       1
Tsinghua University            Freshman   Female    17
                               Junior     Female    13
                                          Male       9
                               Senior     Female    10
                                          Male       4
                               Sophomore  Female     8
                                          Male       8
Name: Gender, dtype: int64
#根据学生的身高是否超过总体的均值来分组,最后计算体重的平均值
condition = df['Height'] > df["Height"].mean()
#身高超过均值True
#身高没有超过均值False
df.groupby(condition)['Weight'].mean()
Height
False    47.672414
True     66.684932
Name: Weight, dtype: float64
df .groupby([ 'School','Gender' ]).agg(
    {
   "Height":[
        ('height_max',"max"),
        ('height_min','min'),
        ("height_mean","mean")
    ],
"Weight" :[
        ("weight_ptp",lambda x:x.max()-x.min()),
        ("weight_median" , "median")
    ]
    }
)
Height Weight
height_max height_min height_mean weight_ptp weight_median
School Gender
Fudan University Female 170.2 147.3 158.776923 29.0 47.5
Male 177.3 167.6 174.212500 19.0 73.5
Peking University Female 170.0 147.8 158.666667 22.0 46.5
Male 185.3 162.4 172.030000 29.0 73.5
Shanghai Jiao Tong University Female 167.7 145.4 159.122500 23.0 49.0
Male 188.9 166.0 176.760000 27.0 75.0
Tsinghua University Female 168.9 150.5 159.753333 21.0 49.0
Male 193.9 155.7 171.638889 28.0 71.0
  • 北京不同aqiInfo下,北京的白天最高温度,均值,白天最低温迪,夜晚最高,夜晚最低,均值,以及aqiInfo的数量,aqi的,最大值,最小值,均值,空气质量指数大于50的天数有多少
import pandas as pd
import numpy as np
data = pd.read_csv('./data/beijing_tianqi_2018.csv')
data.head(4)
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2018-01-01 3℃ -6℃ 晴~多云 东北风 1-2级 59 2
1 2018-01-02 2℃ -5℃ 阴~多云 东北风 1-2级 49 1
2 2018-01-03 2℃ -5℃ 多云 北风 1-2级 28 1
3 2018-01-04 0℃ -8℃ 东北风 1-2级 28 1
data['bWendu'] = data['bWendu'].str.replace("℃",'').astype(np.int0)
data['yWendu'] = data['yWendu'].str.replace("℃",'').astype(np.int0)
df = data.groupby('aqiInfo').agg(
    {
   
        "bWendu":[
            ("bwendu_max","max"),
            ('bwendu_min','min'),
            ('bwendu_mean',"mean")
        ],
        "yWendu":[
            ("ywendu_max","max"),
            ('ywendu_min','min'),
            ('ywendu_mean',"mean")
        ],
        'aqiInfo':[
            ("aqi_info_num",'count')
        ],
        'aqi':[
            ('aqi_min','min'),
            ('aqi_max','max'),
            ('aqi_mean','mean'),
            ('aqi_50',lambda x: sum(x>50))
        ]
    }
)
  • set_index(‘label’,inplace=True) # 设置索引
  • reset_index(inplace=True) # 取消索引
df.reset_index(inplace=True)
df
aqiInfo bWendu yWendu aqiInfo aqi
bwendu_max bwendu_min bwendu_mean ywendu_max ywendu_min ywendu_mean aqi_info_num aqi_min aqi_max aqi_mean aqi_50
0 严重污染 25 25 25.000000 9 9 9.000000 1 387 387 387.000000 1
1 中度污染 36 6 20.238095 25 -5 8.047619 21 151 198 175.523810 21
2 35 -5 16.191304 26 -12 6.478261 115 21 50 37.426087 0
3 38 -2 20.233333 27 -10 10.100000 150 51 100 72.766667 150
4 轻度污染 37 -1 19.318182 27 -9 8.303030 66 101 149 117.772727 66
5 重度污染 27 7 15.916667 11 0 5.416667 12 206 293 244.333333 12

2 数据合并相关

2.1 concat函数

  • 不加参数直接合并,默认是按照轴0进行合并,不会忽略索引,缺失值用NaN填充
  • ignore_index= True, 忽略索引
  • axis=0 ,指定合并的方向
  • join=‘outer’ # 取并集,如果设置为"inner"则取交集
  • keys() # 连接的时候,加上一个层次的Key,用于判定数据来源于那个表
df1 = pd.DataFrame({
   'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3'],
'E': ['E0', 'E1', 'E2', 'E3']})
df2 = pd.DataFrame({
   'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Python是一种功能强大的编程语言,可以用于各种数据分析任务。而在Python数据分析工具中,pandas是最受欢迎和广泛使用的工具之一。 Pandas提供了用于处理和分析数据的高级数据结构和函数。其最常用的数据结构是DataFrame,类似于Excel中的表格。通过Pandas,我们可以读取Excel文件,并将其转换为DataFrame对象进行进一步处理。 使用Pandas进行Excel数据分析的第一步是读取Excel文件。Pandas提供了read_excel函数,可以方便地读取Excel文件并转换为DataFrame对象。我们可以指定要读取的工作表、要保留的列、要跳过的行等。 一旦我们将Excel文件读取为DataFrame对象,我们可以使用Pandas提供的丰富函数和操作对数据进行各种处理和分析。例如,我们可以使用head()函数查看前几行数据,使用describe()函数获取数据的统计摘要,使用mean()函数计算平均值,使用groupby()函数对数据进行分组等等。 除了数据处理和分析,Pandas还提供了各种工具来处理缺失值和数据清洗。我们可以使用dropna()函数删除含有缺失值的行或列,使用fillna()函数将缺失值填充为指定的值,使用replace()函数替换数据中的特定值等。 在数据分析完成后,我们可以使用to_excel函数将DataFrame对象保存为Excel文件。在保存时,我们可以指定要保存的工作表、保存的位置和文件名等。 总之,Pandas是一个非常强大和灵活的,可以使Python处理Excel数据时变得更加简单和高效。无论是数据的读取、处理、分析还是保存,Pandas都提供了丰富而简洁的函数和操作,使得数据分析变得更加容易。 ### 回答2: Pandas是一个功能强大的数据分析工具,可以轻松地处理和分析各种数据。同时,Pandas还提供了许多用于读取、处理和写入Excel文件的功能,让我们能够更方便地从Excel文件中提取和处理数据。 在使用Pandas进行Excel数据分析时,我们首先需要使用`pandas.read_excel()`函数读取Excel文件,并将其存储为一个Pandas的DataFrame对象。这样可以轻松地使用Pandas的各种数据处理和分析功能。 Pandas提供了一系列的函数来处理Excel数据,比如对数据进行过滤、排序、计算统计量等。我们可以使用`head()`函数快速查看数据的前几行,使用`describe()`函数生成数据的统计概要信息,使用`sort_values()`函数对数据进行排序等。 除此之外,Pandas还提供了一些方便的函数来进行Excel数据的写入。我们可以使用`to_excel()`函数将DataFrame对象写入Excel文件,并通过参数来设置写入的Sheet名称、行列标签等。 除了基本的读写操作,Pandas还提供了丰富的数据转换和清洗功能,如数据合并、去重、填充空值等等。这些功能可以帮助我们更好地理解和分析Excel中的数据。 总而言之,Pandas是一个非常方便和强大的数据分析工具,可以让我们轻松地处理和分析Excel数据。通过Pandas,我们可以更加快速和高效地提取、清洗和分析数据,将Excel文件作为数据分析的重要来源之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不 蔓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值