热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pandas中的groupby方法应用

gr

本次主要学习如何使用pandas对数据进行分析统计,特别是groupby
函数的使用,进行分组统计。

本次项目主要总结如下知识点:

  • 生成特定文件夹存放数据和目录
  • groupby
    方法的使用
  • 函数参数的传递

将文件保存在特定的文件夹下

在数据分析的过程中,会生成新的数据和图表,为了将产生的图表放置在相同的目录下,需要生成一个新的文件夹,具体的代码操作如下:

import os
data_path = '.'
output_path = './output'
如果没有的话,需要新建一个文件夹
if not os.path.exits(output_path):
    os.makedirs(output_path)

改段代码表示:如果不存在当前目录output_path
就会生成一个当前目录output_path = './output'

灵活运用groupby

groupby
pandas
中的一种数据统计方法,该方法的基本思想如下:

  • 分割步骤将DataFrame按照指定的键分割成若干组
  • 应用步骤对每个组应用函数,通常是累积、转换或过滤函数
  • 组合步骤

基本步骤如下:

举一个简单的应用例子:我们要查看某家咖啡店销量的产品,如Classic Espresso Drinks, Frappuccino® Blended Coffee, Frappuccino® Light Blended Coffee等产品的总的品类,然后求每一款茶品的平均热量。例如Coffee有四款茶品,每一种茶品有一个卡路里热量值,我们需要求Coffee这款饮品的热量值。这时groupby
方法能够发挥作用。具体的代码如下:

import pandas as pd

data_path = './coffee_menu.csv'
df = pd.read_csv(data_path,sep = ',',encoding = 'utf-8')
#print(df.head())

Beverage_calories_mean = df.groupby("Beverage_category")["Calories"].mean()
Beverage_calories_total = df.groupby("Beverage_category")["Calories"].count()

print(Beverage_calories_total)
print(Beverage_calories_mean)

输出的结果为:

Beverage_category
Classic Espresso Drinks              58
Coffee                                4
Frappuccino® Blended Coffee          36
Frappuccino® Blended Crème           13
Frappuccino® Light Blended Coffee    12
Shaken Iced Beverages                18
Signature Espresso Drinks            40
Smoothies                             9
Tazo® Tea Drinks                     52
Name: Calories, dtype: int64
      
Beverage_category
Classic Espresso Drinks              140.172414
Coffee                                 4.250000
Frappuccino® Blended Coffee          276.944444
Frappuccino® Blended Crème           233.076923
Frappuccino® Light Blended Coffee    162.500000
Shaken Iced Beverages                114.444444
Signature Espresso Drinks            250.000000
Smoothies                            282.222222
Tazo® Tea Drinks                     177.307692
Name: Calories, dtype: float64

我们理清了整体关键步骤之后,我们需要保存相关数据和图片:完整的代码如下:

import pandas as pd
import os
import matplotlib.pyply as plt

"""
分析:总的饮品数据和饮品的平均热量
"""

data_path = './coffee_menu.csv'
output_path = './output_002'

if not os.path.exists(output_path):
    os.makedirs(output_path)
    
def collect_data():
    df = pd.read_csv(data_path,sep = ',',encoding = 'utf-8')
    return df


def analyse_data(df):
    bervage_categories__total = df.groupby("Beverage_category")["Calories"].count()
    beverage_categories_calories_mean = df.groupby("Beverage_category")["Calories"].mean()
    return bervage_categories__total,beverage_categories_calories_mean


def save_and_show_data(bervage_categories_total,beverage_categories_calories_mean):
    #保存数据
    bervage_categories_total.to_csv(os.path.join(output_path,'total_categories.csv'))
    beverage_categories_calories_mean.to_csv(os.path.join(output_path,'mean_calories.csv'))
    
    #保存图表
    bervage_categories_total.plot(kind = 'bar')
    plt.title("total_beverage_categories")
    plt.tight_layout()
    plt.savefig(os.path.join(output_path,'total_berage_categories.png'))
    plt.show()


    beverage_categories_calories_mean.plot(kind='bar')
    plt.title("mean_beverage_calories")
    plt.tight_layout()
    plt.savefig(os.path.join(output_path, 'mean_bervage_calories.png'))
    plt.show()




def main():
    df = collect_data()

    bervage_categories_total,beverage_categories_calories_mean = analyse_data(df)

    save_and_show_data(bervage_categories_total,beverage_categories_calories_mean)

if __name__ == '__main__':
    main()

输出表格为:

项目总结:

  1. 创建目录将生成图表单独存放
  2. 熟练使用groupby
    方法
  3. 处理的数据,传入函数的参数

(完)

★往期回顾
美国PM2.5污染变化图
用python绘制中国地区
项目学习(3)


推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Python爬虫数据导出至CSV及图片存储技术详解
    Python爬虫数据导出至CSV及图片存储技术详解 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 依然最钟爱《People Have the Power》,强烈推荐大家聆听这首经典之作
    尽管今日情绪低落,我在音乐库中反复筛选,最终还是选择了《People Have the Power》来激励自己。这首歌不仅旋律动听,歌词也充满力量,能够带给人正能量。强烈建议大家找来聆听,体验其独特的魅力。《People Have the Power》虽然不是出自专辑《Horses》,但同样是一首不可多得的经典之作。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在 Flask 框架中,`app` 是一个核心实例,主要负责接收来自 Web 服务器的请求。当用户通过浏览器发起请求时,这些请求首先会被 Web 服务器捕获,再传递给 `app` 实例。`app` 接收到请求后,会根据定义的路由规则匹配相应的视图函数,并调用该函数处理请求,最终生成响应结果返回给客户端。这一过程确保了高效、灵活的 Web 应用开发。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 为了优化用户体验,本文探讨了如何调整下拉菜单的宽度。通过合理设置宽度,可以提升界面的美观性和易用性。文章提供了具体的代码示例,帮助开发者实现这一目标。例如,可以通过 CSS 或 JavaScript 来动态调整下拉菜单的宽度,确保其在不同设备和屏幕尺寸上都能保持良好的显示效果。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 在该项目中,参与者需结合历史使用模式和天气数据,以预测华盛顿特区自行车共享系统的租赁需求。数据分析部分首先涉及数据的收集,包括用户骑行记录和气象信息,为后续模型构建提供基础。通过深入的数据预处理和特征工程,确保数据质量和模型准确性,最终实现对自行车租赁需求的有效预测。 ... [详细]
author-avatar
国邮国旅刘峰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有