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

pandas数据分析(二)

文章目录

文章目录

  • DataFrame数据处理与分析
    • 读取Excel文件中的数据
    • 筛选符合特定条件的数据
    • 查看数据特征和统计信息
    • 按不同标准对数据排序
    • 使用分组与聚合对员工业绩进行汇总


DataFrame数据处理与分析

部分数据如下
在这里插入图片描述
这个数据百度可以搜到,就是下面这个
在这里插入图片描述

读取Excel文件中的数据

import pandas as pd
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
#usecols指定要读取的列的索引或名字
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx',usecols=['工号','姓名','时段','交易额'])
print(df[:10],end='\n\n')#输出前10行数据

在这里插入图片描述

#读取第一个worksheet中所有列
#跳过第1、3、5行,指定下标为1的列中数据为DataFrame的行索引标签
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx',skiprows=[1,3,5],index_col=1)
print(df[:10])

在这里插入图片描述

筛选符合特定条件的数据

#读取全部数据,使用默认索引
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx')

#下标在[5,10]区间的行,切片限定的是左闭右开区间
df[5:11]

在这里插入图片描述

#iloc使用整数做索引
df.iloc[5]#索引为5的行

在这里插入图片描述

df.iloc[[3,5,10]]#下标为[3,5,10]的行

在这里插入图片描述

df.iloc[[3,5,10],[0,1,4]]#行下标[3,5,10],列下标[0,1,4]

在这里插入图片描述

df[['姓名','时段','交易额']][:5]#指定的列前5行的数据

在这里插入图片描述

df[:10][['姓名','日期','柜台']]#只查看前10行指定的列

在这里插入图片描述

df.loc[[3,5,10],['姓名','交易额']]#下标为[3,5,10]行的指定列

在这里插入图片描述

df.at[3,'姓名']#行下标为3,姓名列的值'赵六'

#如果有报错,看看柜台列的字符是不是跑到交易额列去了
#因为交易额有几个是空值,直接复制来的数据可能位置不对
print(df[df['交易额']>1700])#交易额高于1700元的数据

在这里插入图片描述

df['交易额'].sum()#交易总额327257.0

#注意这个数据里是中文冒号
df[df['时段']=='14:00-21:00']['交易额'].sum()#下午班的交易总额151228.0

#张三下午班的交易情况
df[(df.姓名=='张三')&(df.时段=='14:00-21:00')]

在这里插入图片描述

#日用品柜台销售总额
df[df['柜台']=='日用品']['交易额'].sum()88162.0

#张三和李四2人销售总额
df[df['姓名'].isin(['张三','李四'])]['交易额'].sum()116860.0

#交易额在指定范围内的记录
df[df['交易额'].between(800,850)]

在这里插入图片描述

查看数据特征和统计信息

#查看交易额统计信息
df['交易额'].describe()

在这里插入图片描述

#交易额四分位数
df['交易额'].quantile([0,0.25,0.5,0.75,1.0])

在这里插入图片描述

#交易额中值
df['交易额'].median()1259.0

#交易额最小的3条记录
df.nsmallest(3,'交易额')

在这里插入图片描述

#交易额最大的3条记录
df.nlargest(3,'交易额')

在这里插入图片描述

#最后一个日期
df['日期'].max()Timestamp('2019-03-31 00:00:00')

#最小的工号
df['工号'].min()1001

#第一个最小交易额的行下标
index=df['交易额'].idxmin()
print(index)
#第一个最小交易额
print(df.loc[index,'交易额'])76
53.0

#第一个最大交易额的行下标
index=df['交易额'].idxmax()
print(index)
#第一个最大交易额
print(df.loc[index,'交易额'])105
12100.0

按不同标准对数据排序

#按交易额和工号降序排序
df.sort_values(by=['交易额','工号'],ascending=False)

在这里插入图片描述

#按交易额降序、工号升序排序
df.sort_values(by=['交易额','工号'],ascending=[False,True])

在这里插入图片描述

#按工号升序排序,na_position指定缺失值放在最前面/后面,first/last
df.sort_values(by='工号',na_position='last')

在这里插入图片描述

#按列名升序排序
#汉字的Unicode编码排序
df.sort_values(by='姓名',ascending=True)

在这里插入图片描述

使用分组与聚合对员工业绩进行汇总

#index对5求余,然后求和
df.groupby(by=lambda num:num%5)['交易额'].sum()

在这里插入图片描述

#根据指定字典的键对index进行分组,值为index标签
df.groupby(by={7:'下标为7的行',35:'下标为35的行'})['交易额'].sum()

在这里插入图片描述

#不同时段的销售总额
df.groupby(by='时段')['交易额'].sum()

某行数据有问题,但无伤大雅,重要的是方法
在这里插入图片描述

#各柜台销售总额
df.groupby(by='柜台')['交易额'].sum()

在这里插入图片描述

#查看每个员工上班总时长是否均匀
ddf=df.groupby(by='姓名')['日期'].count()
ddf.name='上班次数'
ddf

在这里插入图片描述

#每个员工交易额的平均值
df.groupby(by='姓名')['交易额'].mean().round(2).sort_values()

在这里插入图片描述

#汇总交易额转换为整数
df.groupby(by='姓名').sum()['交易额'].apply(int)

在这里插入图片描述

#每个员工交易额的中值
df.groupby(by='姓名')['交易额'].median()

在这里插入图片描述

# 每个员工交易额中值的排名
dff=df.groupby(by='姓名').median()
dff['排名']=dff['交易额'].rank(ascending=False)
dff[['交易额','排名']]

在这里插入图片描述

# 每个员工不同时段的交易额
df.groupby(by=['姓名','时段'])['交易额'].sum()

在这里插入图片描述

# 时段和交易额采用不同的聚合方式
df.groupby(by=['姓名'])['时段','交易额'].aggregate({'交易额':['sum'],'时段':lambda x:'各时段累计'})

在这里插入图片描述

# 使用DataFrame结构的agg()方法对指定列进行聚合
df.agg({'交易额':['sum','mean','min','max','median'],'日期':['min','max']})

在这里插入图片描述

# 对分组结果进行聚合
df.groupby(by='姓名').agg(['max','min','mean','median'])[['工号','交易额']]

在这里插入图片描述


推荐阅读
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文介绍如何使用 Python 的 Pandas 库中 Series 对象的 round() 方法,对数值进行四舍五入处理。该方法在数据预处理和分析中非常有用。 ... [详细]
  • ABBYY FineReader:高效PDF转换、精准OCR识别与文档对比工具
    在处理PDF转换和OCR识别时,您是否遇到过格式混乱、识别率低或图表无法正常识别的问题?ABBYY FineReader以其强大的功能和高精度的识别技术,完美解决这些问题,帮助您轻松找到最终版文档。 ... [详细]
  • python时间序列之ADF检验(1)
    读取数据,pd.read_csv默认生成DataFrame对象,需将其转换成Series对象DataFrame和Series是pandas中最常见的2 ... [详细]
author-avatar
82年的老代码
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有