Pandas,数据处理的好帮手!
时间:2022-07-26
本文章向大家介绍Pandas,数据处理的好帮手!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近做可视化视频,在处理数据的时候遇到了一些问题。
所以就来总结一下,也给大家一个参考。
1. pandas.pivot_table
数据透视表,数据动态排布并且分类汇总的表格格式。
我的理解就是可以进行「行列转换」。
比如下面这样的一个转换。
对名字列进行分类汇总,然后将日期那一列转换到行上,具体代码如下。
# 读取数据
df = pd.read_csv('test.csv', encoding='utf-8', header=0, names=['name', 'number', 'day'])
# 数据透视表
df_result = pd.pivot_table(df, values='number', index=['name'], columns=['day'], fill_value=0).reset_index()
# 输出表格
df_result.to_csv('result.csv')
2. pandas.Series.cumsum
获取累加数,可以选择「列累加」,也可以「行累加」。
下面来看一个全明星球员出场次数的统计。
首先添加num列,然后对name进行分类汇总,然后进行「行累加」。
最后便可得到球员历年的数据情况,避免出现数据缺失的情况,具体代码如下。
# 读取数据
df = pd.read_csv('test.csv', encoding='utf-8', header=None, names=['name', 'year'])
# 添加次数列
df['num'] = 1
# 进行行累加操作
df['cumsum'] = df.groupby('name')['num'].transform(pd.Series.cumsum)
df.to_csv('test.csv', encoding='utf-8')
「列累加」,对每年的数据进行累加。
这样就可以得到汇总的数据,具体代码如下。
# 读取数据
df = pd.read_csv('test.csv', encoding='utf-8', header=0)
# 进行列累加
df = np.cumsum(df, axis=1)
print(df)
3. DataFrame.apply
上面的cumsum函数是逐列进行累加的,如果需要总累加,那么便可以使用apply函数。
代码如下,axis可转换轴。
# 进行「行累加」,并且把结果写在最后一行
df.loc['Row_sum'] = df.apply(lambda x: x.sum())
# 进行「列累加」,并且把结果写在最后一行
df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1)
得到结果如下。
4. 计算分类汇总后的数据总和
# 按name分类汇总并计算总和
df.groupby(['name'])[['name', 'view', 'danmaku']].sum().reset_index())
5. pandas.to_datetime
利用to_datatime函数对字符串进行时间转换,然后以此来筛选数据。
比如要选取特定区间内的数据内容,可以通过如下的代码。
# 读取数据
df = pd.read_csv('test.csv', encoding='utf-8', header=None, names=['name', 'date', 'title', 'like', 'coin', 'sum'])
# 将字符串转换为时间格式
df['date'] = pd.to_datetime(df['date'])
# 时间条件筛选,选取20200114到20200224时间段的数据
df = df[(df['date'] >= pd.to_datetime('20200114')) & (df['date'] <= pd.to_datetime('20200224'))]
print(df)
最后附上小F发现的一个网站——Pandas中文网。
不仅有相关的技术文档。
还有整理好的资源,文章or视频。
网址:https://www.pypandas.cn
- Spring boot with Schedule (启用/禁用)
- DevOps Tools
- Docker 虚拟机之 Redis
- Spring boot with HTTPS SSL
- Spring boot with Git version
- Spring boot with Elasticsearch 5.5.1
- 怎样将 MySQL 数据表导入到 Elasticsearch
- Spring data 数据库建表(一对一,一对多,多对多)
- Apache Sqoop 将mysql导入到Hadoop HDFS
- Redis 4.0.0 一键安装脚本,CentOS 7 systemd 完美启动
- Spring boot with Apache Hive
- Apache Hive 快速入门
- CentOS 7.3 + Server JRE 1.8 + Hadoop-2.8.0
- Apache Hbase 快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用扩展技术对SAP Fiori应用进行端到端的增强,一个实际案例介绍
- python Unhandled exception in event loop:错误解决
- SAP Fiori image的显示原理
- 解决Error:All flavors must now belong to a named flavor dimension.
- 同时搞定Android和iOS的Dart语言(3):数值类型
- SAP Fiori图标(icon)设计原理
- SAP Fiori应用发生超时错误的一个可能原因
- 如何用云开发快速搭建实时 Todo List 应用
- Angular应用的入口
- Angular里的structural directive的一个例子
- Angular条件指令ngIf的一个例子
- Angular的property binding一个例子
- Angular里的按钮事件注册方法一例
- 如何使用Angular的@Input()装饰器
- Angular父子Component之间的事件通知机制