【Python】—— pandas数据处理

Pandas 提供了丰富的数据处理功能,涵盖了从数据导入、清理、转换到分析和可视化的方方面面。以下是一份关于 Pandas 数据处理的主要内容:

1. 数据导入和导出

  • 导入数据:

    import pandas as pd# 从 CSV 文件导入
    df = pd.read_csv('data.csv')# 从 Excel 文件导入
    df = pd.read_excel('data.xlsx')
    
  • 导出数据:

    # 导出到 CSV 文件
    df.to_csv('output.csv', index=False)# 导出到 Excel 文件
    df.to_excel('output.xlsx', index=False)
    

2. 数据清理

  • 处理缺失值:

    # 删除包含缺失值的行
    df.dropna(inplace=True)# 填充缺失值
    df.fillna(value, inplace=True)
    
  • 删除重复值:

    df.drop_duplicates(inplace=True)
    

3. 数据选择和过滤

  • 选择列:

    df['Column1']
    
  • 条件过滤:

    selected_data = df[df['Column1'] > 2]
    

4. 数据转换

  • 新增列:

    df['NewColumn'] = df['Column1'] + df['Column2']
    
  • 映射和替换:

    df['Category'] = df['Category'].map({'A': 1, 'B': 2, 'C': 3})# 替换特定值
    df.replace({'old_value': 'new_value'}, inplace=True)
    

5. 数据分组和聚合

  • 按列分组:

    grouped_data = df.groupby('Category')['Value'].mean()
    
  • 多列分组和多个聚合函数:

    grouped_data = df.groupby(['Category', 'SubCategory']).agg({'Value': 'mean', 'Count': 'sum'})
    

6. 数据合并和连接

  • 合并两个 DataFrame:

    merged_df = pd.merge(df1, df2, on='common_column', how='inner')
    
  • 连接操作:

    concatenated_df = pd.concat([df1, df2], axis=0)
    

7. 时间序列处理

  • 处理日期数据:

    df['Date'] = pd.to_datetime(df['Date'])
    
  • 时间索引:

    df.set_index('Date', inplace=True)
    
  • 滚动窗口计算:

    df['RollingMean'] = df['Value'].rolling(window=3).mean()
    

8. 数据可视化

  • 基本图表:
    import matplotlib.pyplot as pltdf['Column1'].plot(kind='line')
    df['Column2'].plot(kind='bar')
    

这些功能只是 Pandas 提供的众多数据处理功能的一部分。根据具体的数据和分析目标,还需要深入学习 Pandas 文档并结合其他库(如 Matplotlib、Seaborn、NumPy)进行更复杂的数据处理和分析。


第1关:将超市销售excel文件根据商品的类别筛选存储

任务描述
本关任务:超市销售数据如图所示

excel文件超市销售数据

建立excel 文件“类别销售”,根据不同类别建立多个工作表,将相同类别的销售信息存放在相应的工作表中。
excel文件类别销售

相关知识
为了完成本关任务,你需要掌握:1.读取 excel 文件;2.筛选 dataframe 数据;3.将数据写入工作簿和工作表。

从 excel 文件读入数据

pd.read_excel(filename,sheet_name=0,header=0,index_col=None,names=None,dtype=None)

filename:指定电子表格的具体路径
sheet_name:指定需要读取电子表格中的第几个 sheet,既可以传递整数也可以传递具体的 Sheet 名称
header:是否需要将数据集的第一行用作表头,默认为是需要的
index_col:指定哪些列用作数据框的行索引(标签)
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头
dtypes:通过字典的形式,指定某些列需要转换的形式

向 excel 文件写入数据

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None, encoding=None)

excel_writer: 文件路径或现有的 ExcelWriter。
sheet_name:字符串,表的名称。默认“Sheet1”。
na_rep: 字符串,默认‘ ’,缺失数据表示方式。
float_format: 字符串,默认None,格式化浮点数的字符串。
columns: 列表,要写入的列。
header: 布尔或字符串列表,默认为Ture。如果给定字符串列表,则它是列名。
index:布尔,默认的Ture,行名(索引)。
index_label: 字符串或序列,默认为None。
注意:通过 ExcelWriter 写入后要同执行save()保存。

DataFrame

  • 唯一值函数
    unique()是以数组形式返回列的所有唯一值

  • 筛选数据
    Pandas 的.loc 参数可以对多列数据进行筛选,并且支持不同筛选条件逻辑组合。
    常用的筛选条件包括等于(==),不等于(!),大于(>),小于(<),大于等于(>=) ,小于等于(<=)等等。逻辑组合包括与(&)和或(|)。

list1=[["张三",'男'],["李四",'女'],["王五",'男'],["赵六",'女']]
import panda as pd
df=pd.DataFrame(list1,columns=["姓名","性别"])
则 df姓名 性别
0  张三  男
1  李四  女
2  王五  男
3  赵六  女
df["性别"].unique()“男”,"女"
df.loc[df["性别"]=="男"]姓名 性别
0  张三  男
2  王五  男

编程要求
根据提示,在右侧编辑器补充代码,建立 excel 文件“类别销售”,根据不同类别建立多个工作表,将相同类别的销售信息存放在相应的工作表中。

测试说明
平台会对你编写的代码进行测试:
输入类别,系统将显示该类别工作表的日期,商品编码,商品名称和合计金额四列信息

测试输入:调料
预期输出:

          日期            商品编码              商品名称  合计金额
0 2000-05-30  \t090202010048  \t裕荣虾味先虾条(原味)80g   7.7
1 2000-06-22  \t090202010071    \t四季宝颗粒花生酱340g  13.3
2 2000-06-24  \t090202010035       \t牛头牌鸡汤块66g   7.7
3 2000-07-18  \t090202010024     \t金兰拌面拌饭酱370g  20.4

测试输入:电池
预期输出:

          日期            商品编码              商品名称  合计金额
0 2000-06-14  \t010105010002         \t金霸王725.2
1 2000-06-14  \t010105010005  \t金霸王超能量(m3)726.2
2 2000-07-16  \t010105010007       \t南孚电池75粒装   8.9

运行代码

import pandas as pd
df=pd.read_excel("xlscl/step1/超市销售数据.xlsx",dtype={"商品编码":str,"商品条码":str})
writer = pd.ExcelWriter("xlscl/step1/类别销售.xlsx")
#代码开始
x=df["类别"].unique()  #获取商品类别
for i in x:  leibie=df.loc[df["类别"]==i]leibie.to_excel(writer,sheet_name=i,index=False)  
writer.save()
#代码结束

第2关:将银行信息excel文件按地区筛选

任务描述
本关任务:编写一个将银行信息的 excel 文件筛选存储的小程序
银行分布 excel 文件如图所示
在这里插入图片描述

请编写程序,在 test 文件夹下建立 excel 文件银行一线城市,将北京市、上海市、广州市、深圳市的银行编号、名称按银行编号从小到大的顺序放置到不同的excel 工作表中
在这里插入图片描述

提示:可以将城市的名字放入列表

运行代码

import pandas
writer = pandas.ExcelWriter('test/银行一线城市.xlsx')
data=pandas.read_excel("test/银行信息.xlsx",dtype={"银行编号":str})
#代码开始
list1 = ["北京市","上海市","广州市","深圳市"]
for i in list1:ans = data.loc[data["城市"]==i,["银行编号","名称"]]ans = ans.sort_values("银行编号")ans.to_excel(writer,sheet_name=i,index=False)
#代码结束
writer.save()

第3关:将gdpecxcel文件按年份筛选存储

任务描述
本关任务:编写一个将 GDP 信息的 excel 文件筛选存储的小程序
各省 GDPexcel 文件如图所示
在这里插入图片描述

请编写程序,在 test 文件夹下建立 excel 文件 GDP 分年份,将2000-2016年每年建一个工作表,将该年各省的省份、GDP 称按 GDP 从大到小的顺序放置
注意:工作表的名称为字符形
在这里插入图片描述

DataFrame 类型的排序数据
pandas 中的sort_values()函数,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。

DataFrame.sort_values(by=”列名”,axis=0,ascending=True,inplace=False)

by:axis轴上的某个索引或索引列表。
axis=0按列排序 axis=1按行排序 默认按列。
ascending是否按指定列的数组升序排列,默认为True,即升序排列。
inplace是否用排序后的数据集替换原来的数据,默认为False,即不替换。

运行代码

import pandas
writer = pandas.ExcelWriter('test/GDP分年份.xlsx')
data=pandas.read_excel("test/各省GDP.xlsx",dtype={"年份":str},)
#代码开始
for i in range(2000,2017):ans = data.loc[data["年份"] == str(i), ["省份","GDP"]]ans = ans.sort_values("GDP", ascending = False)ans.to_excel(writer, sheet_name = str(i), index = False)
#代码结束
writer.save()

第4关:统计超市销售excel文件各类别和各日的数据,并将统计结果存入新的工作簿

任务描述
本关任务:打开超市销售数据工作簿
excel文件超市销售数据

使用 excel 建立一个统计数据工作簿,建立一个工作表类别统计,按合计金额降序显示不同类别销售金额的和。
excel类别销售统计

建立一个工作表日期统计,按日期升序显示不同日期销售金额的和
excel文件日期销售统计

相关知识
为了完成本关任务,你需要掌握:1.DataFrame 如何汇总数据;2.DataFrame 如何排序数据。

DataFrame 类型的汇总数据
Groupby 可以根据一个或多个键对 DataFrame 计算分组摘要统计,
如计数、求和、平均值、标准差,或用户自定义函数。

例如

list1=[["张三",'男'],["李四",'女'],["王五",'男'],["赵六",'女']]
import pandas as pd
df=pd.DataFrame(list1,columns=["姓名","性别"])
则df姓名 性别
0  张三  男
1  李四  女
2  王五  男
3  赵六  女
df.groupby(["性别"])["姓名"].count()性别
女    22
DataFrame.groupby(by=None, axis=0, as_index=True)

by :标签或标签列表;用于确定分类的列。
axis: 接收 0/1;用于表示沿行(0)或列(1)分割。
as_index:默认Ture,汇总后会建立一个序列存放汇总的结果。汇总的列是序列的index 索引,统计值的列是序列的数值。
指定为 False 则汇总结果是一个数据集,汇总列和统计值都是列。

序列类型的排序
序列的sort_values() 函数,可以将序列依照数据进行排序。

series1.sort_values(ascending=True,inplace=False)

ascending是否按指定列的数组升序排列,默认为 True,即升序排列。
inplace 是否用排序后的数据集替换原来的数据,默认为 False,即不替换。
序列的 sort_index() 函数,可以将序列依照索引列进行排序。

编程要求
根据提示,在右侧编辑器补充代码,使用 excel 建立一个统计数据工作簿,建立一个工作表类别统计,按合计金额降序显示不同类别销售金额的和;
建立一个工作表日期统计,按日期升序显示不同日期销售金额的和。

测试说明
平台会对你编写的代码进行测试:
输出两个工作类别统计工作表和日期统计工作表的数据

运行代码

import pandas as pd
df=pd.read_excel("xlscl/step1/超市销售数据.xlsx")
writer = pd.ExcelWriter('xlscl/step2/统计数据.xlsx')
#代码开始
excel1 = df.groupby("类别")["合计金额"].sum()  
excel1.sort_values(ascending = False, inplace = True)  
excel1.to_excel(writer, sheet_name= "类别统计") excel2 = df.groupby("日期")["合计金额"].sum()  
excel2.sort_index(inplace = True)  
excel2.to_excel(writer, sheet_name = "日期统计")  
writer.save()  
#代码结束

第5关:将超市销售excel文件分别存放在多个日期工作簿的不同类别工作表中

任务描述
本关任务:
超市销售数据如图所示
在 xlscl/step3/rq 文件夹下根据销售的日期建立不同的 excel 文件,
日期文件

将同一类别的销售信息存放在 excel 文件的不同工作表中。
零食类别工作表

并建立类别统计工作表,显示该日各类别的合计金额的和,按合计金额的降序排列。
excel类别

编程要求
根据提示,在右侧编辑器补充代码。
注意:由于文件名只能是字符形,所以需要将日期型数据转换为字符形
可以使用 str(日期时间数据).replace('-',"")[:8]
将日期时间的字符的-删除再取前8个字符
此外,文件需要保存再 xlscl 的 step3 文件夹下的 rq 文件夹下

测试说明
平台会对你编写的代码进行测试:

测试输入:

20000525
零食

预期输出:

商品编码                 商品名称  合计金额
0   90101030095  \t康师傅苏打夹心香草巧克力饼干96g   4.5
1   90101030100         \t百力滋巧克力味50G   3.6
2   90101070032          \t糙米馆荞麦150g   6.9
3   90101090052         \t益民盐津杨梅180g   6.9
4   90101090054         \t益民精盐桃肉160g   6.9
5   90101090055          \t益民咸话梅110g   6.9
6   90101090057         \t益民多味山楂180g   6.9
7   90101090058    \t益达无糖口香糖蓝莓味13.5g   1.9
8   90102010035          \t黑塘麦芽饼500g  27.8
9   90103010048          \t渝业烧烤豆干80g   1.9
10  90103010053      \t金锣Q香香肠老汤味100g   2.1类别   合计金额
0384.0
1344.5
2   零食   76.3
3   饮料   38.2
4   冷饮   22.0
5  奶制品   15.5
6  方便面    3.5
7  纸制品    2.1

测试输入:

20000530

预期输出:

          商品编码         商品名称  合计金额
0  90501000012   \t黄鹤楼(硬雅香)    40
1  90501000016  \t黄金叶(软大金圆)    20
2  90501000021      \t南京(红)    22类别   合计金额
0   零食  115.1
182.0
2   饮料   49.2
3   冷饮   22.5
4  奶制品    9.8
5   调料    7.7
6  纸制品    6.1
7  方便面    3.5

运行代码

import pandas as pd
df=pd.read_excel("xlscl/step1/超市销售数据.xlsx",dtype={"商品编码":str,"商品条码":str})
#代码开始
data =df["日期"].unique()
for i in data:file_name = str(i).replace('-', "")[:8]writer = pd.ExcelWriter('xlscl/step3/rq/'+file_name+'.xlsx')excel1 = df.loc[df["日期"] == i]Class = df["类别"].unique()for j in Class:excel2 = excel1.loc[df["类别"] == j]excel2.to_excel(writer, sheet_name = j, index = False)excel3 = excel1.groupby("类别")["合计金额"].sum()excel3.sort_values(ascending = False, inplace = True)excel3.to_excel(writer, sheet_name = "类别统计", index_label = "类别")writer.save()
#代码结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/220410.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 常见错误总结(会不断更新中。。)

常见错误 1. 配置部署key后git clone还是拉不下代码 执行以下命令 先添加 SSH 密钥到 SSH 代理&#xff1a; 如果你使用 SSH 代理&#xff08;例如 ssh-agent&#xff09;&#xff0c;将生成的私钥添加到代理中。 ssh-add ~/.ssh/gstplatrontend/id_rsa如果报错以下错误信息…

邮件营销:定义、优势与策略指南

什么是邮件营销&#xff1f;跨境电商或者出海企业可能会经常使用它&#xff0c;它是传统的营销方式之一&#xff0c;在上世纪80年年代得以运用。 邮件营销&#xff0c;英文全称为Email Direct Marketing&#xff0c;缩写为EDM。它是指在收件人许可的情况下&#xff0c;通过电子…

持续集成交付CICD:基于 GitLabCI 与 JenkinsCD 实现后端项目发布

目录 一、实验 1. GitLabCI环境设置 2.优化GitLabCI共享库代码 3.JenkinsCD 发布后端项目 4.再次优化GitLabCI共享库代码 5.JenkinsCD 再次发布后端项目 一、实验 1. GitLabCI环境设置 &#xff08;1&#xff09;GitLab给后端项目添加CI配置路径 &#xff08;2&#xf…

如何实现公网访问本地内网搭建的WBO白板远程协作办公【内网穿透】

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cp…

Java小案例-SpringBoot火车票订票购票票务系统

目录 前言 详细资料 源码获取 前言 SpringBoot火车票订票购票票务系统 前端使用技术&#xff1a;HTML5,CSS3、JavaScript、VUE等 后端使用技术&#xff1a;Spring boot&#xff08;SSM&#xff09;等 数据库&#xff1a;Mysql数据库 数据库管理工具&#xff1a;phpstud…

CSS

一&#xff0c;盒子模型&#xff1a; 1&#xff0c;border&#xff1a; &#xff08;1 border-width: 5px; &#xff08;2 border-style: solid;实线 dotted :  点线。dashed :  虚线。solid :  实线边框 &#xff08;3 border-color: aqua; 简写&#xff1a;border&a…

为什么网站需要SSL证书?

在当今数字化的世界里&#xff0c;网站安全性已经成为互联网用户关注的重点。SSL证书&#xff08;Secure Sockets Layer&#xff09;作为一种安全技术&#xff0c;已经成为保障网站安全性的基本工具。下面让我们来看看为什么网站需要SSL证书以及安装后的各种好处。 永久免费SS…

C#中(, ||)与(, |)的区别

前言 在C#编程语言中&#xff0c;逻辑运算符用于组合和比较条件&#xff0c;以控制程序的流程和行为。在逻辑运算符中&#xff0c;有两对非常重要的运算符&#xff1a;&&和||、&和|。尽管它们看起来很相似&#xff0c;但其实它们有着不同的行为和使用场景。下面我们…

鸿蒙4.0核心技术-WebGL开发

场景介绍 WebGL主要帮助开发者在前端开发中完成图形图像的相关处理&#xff0c;比如绘制彩色图形等。 接口说明 表1 WebGL主要接口列表 接口名描述canvas.getContext获取canvas对象上下文。webgl.createBuffer(): WebGLBuffernullwebgl.bindBuffer(target: GLenum, buffer: …

【【UART 传输数据实验】】

UART 传输数据实验 通信方式在日常的应用中一般分为串行通信&#xff08;serial communication&#xff09;和并行通信&#xff08;parallel communication&#xff09;。 我们再来了解下串行通信的特点。串行通信是指数据在一条数据线上&#xff0c;一比特接一比特地按顺序传…

【SpringCloudAlibaba】Sentinel熔断限流工具的使用

一、前言 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维…

用python怎么输出个人信息,python输入输出学生信息

本篇文章给大家谈谈python输入自己的姓名,输出hello,某某某同学&#xff0c;以及python输入姓名打印学生信息&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 校验身份证号码并输出个人信息 类型&#xff1a;流程控制 描述 中国目前采用的是18位身份证号&…

记录今日将C语言的Windows程序更改为python语言Windows程序,实现子窗口控制,类似微信程序框架最简单的原型

基本思路 为什么要选择python制作Windows应用程序&#xff0c;主要就是源代码直接展示&#xff0c;发现问题随时修改&#xff0c;同时可以不断增加新的功能方便。 由于C语言的Windows程序中结构类型在python中不能使用&#xff0c; 因此我们按照ctypes模块指导意见继承structu…

luttuce(RedisTempate)实现hash(动态数据) expire lua脚本

话不多说先放脚本&#xff1a; local argv ARGV local length #argv if length > 0 then local unpackArgs {} for i 1, length - 1 dotable.insert(unpackArgs, argv[i]) end if redis.call(exists, KEYS[1]) 1 thenredis.call(del, KEYS[1])redis.call(hset, KEYS[…

9.鸿蒙app用户界面的跳转abilityslice的跳转

9.用户界面的跳转abilityslice的跳转&#xff0c;值传递&#xff0c;数值累加 首页页面显示1&#xff0c;第2页显示2&#xff0c;再次点击返回首页3。。。 MainAbilitySlice.java 关键代码&#xff1a; 点击事件 text.setClickedListener(new Component.ClickedListener() …

SQL语句整理二--Mysql

文章目录 知识点梳理&#xff1a;1. mysql 中 in 和 exists 区别2. varchar 与 char 的区别 查看表结构&#xff1a;获取当前时间&#xff1a;查看建表语句&#xff1a;修改用户密码&#xff1a;查看所有用户&#xff1a;grant命令&#xff1a;判断当前数据库有多少连接数&…

day34算法训练|贪心算法

1005.K次取反后最大化的数组和 两次贪心算法思路 1. 数组中有负数时&#xff0c;把绝对值最大的负数取反 2. 数组全为非负数时&#xff0c;一直取反最小的那个数 步骤&#xff1a; 第一步&#xff1a;将数组按照绝对值大小从大到小排序&#xff0c;注意要按照绝对值的大小…

未来医疗的新希望:人工智能与智能器官的奇妙融合

导言 人工智能技术的不断演进在医疗领域掀起了一场革命。随着智能器官与人工智能的深度融合&#xff0c;虽然医学领域迎来了前所未有的机遇&#xff0c;但同时也伴随着一系列潜在的问题与挑战。本文将深入探讨人工智能如何与智能器官相互融合&#xff0c;为医学带来新的治疗可能…

GeoTrust SSL证书详细介绍

GeoTrust是著名的证书颁发CA机构DigiCert的品牌。GeoTrustSSL产品在Internet上提供从基本域名验证到扩展验证SSL标准支持的最高级验证的安全性。 GeoTrust OV&#xff08;组织验证&#xff09;证书验证域所有权和组织的存在。在颁发证书之前&#xff0c;会检查该组织在公共数据…

【网络安全】-Linux操作系统基础

文章目录 Linux操作系统目录结构Linux命令格式Linux文件和目录操作命令Linux用户和用户组操作命令Linux查看和操作文件内容命令Linux文件压缩和解压缩命令Linux网络管理命令Linux磁盘管理和系统状态命令Linux安全加固总结 Linux是一个强大的操作系统&#xff0c;广泛用于服务器…