pandas数据清洗和统计实例

步骤:

  1. 统计每一个列的标签个数
  2. 去除或者填充某一列NaN值
  3. 遍历某一列
  4. 分组统计
  5. 在DataFrame中插入行
  6. 在DataFrame中追加行

pandas读取Json数据或csv数据

以一个json数据为例,只要json每一个object都一致就可以:

# 读取json或csv
df_f = pd.read_json(ROOT + 'metadata_compiled.csv')
df_f = pd.read_csv(ROOT+'metadata_compiled.csv', header=0, index_col=0)
# 保存csv
new_df.to_csv("./newframe.csv", sep=',')

groupby+count统计、去除或填充NaN

import os
import numpy as np
import pandas as pd
from tqdm import tqdm
import soundfile
root_path = "F:/DATAS/***/***-main/"
metafilename = "metadata.json"df_f = pd.read_json(root_path + metafilename)
print(df_f.head(10))# 统计一些列的值的数目,用groupby+count
print("--> shape:", df_f.shape)  # 1324 7
print(df_f.groupby("B")["filename"].count())  # sum to 1120
print(df_f.groupby("C")["filename"].count())  # sum to 674
print(df_f.groupby("D")["filename"].count())  # sum to 1324
print(df_f.groupby("E")["filename"].count())  # sum to 1324
print(df_f.groupby("F")["filename"].count())  # sum to 204# 填充A列的NaN
# df_f["A"] = df_f["A"].fillna(2)
# 去除B列的NaN
# df_f = df_f.dropna(subset=["B"])

遍历DataFramem

pandas DataFrame的遍历
有多种方法,介绍一种
用itertuples得到迭代体,用getattr获取列值。

dura_list = []# for idx, row in tqdm(enumerate(df_f.iterrows()), total=len(df_f)):
for idx, row in tqdm(enumerate(df_f.itertuples()), total=len(df_f)):# print(idx, row)fname = root_path + "raw/" +getattr(row, "filename")try:samples, sample_rate = soundfile.read(fname, dtype='float32')except Exception as e:print(e)print(fname)duration = samples.shape[0] / float(sample_rate)dura_list.append(duration)
print(dura_list)

列表画直方图

统计所得列表的直方图,参考菜鸟教程

import matplotlib.pyplot as plt
plt.hist(cnt, bins=30, color='skyblue', alpha=0.8)# 设置图表属性
plt.title('RUNOOB hist() Test')
plt.xlabel('Value')
plt.ylabel('Frequency')# 显示图表
plt.show()

也可以用seaborn库的displot或countplot直接画出更好看的图。

插入数据

pandas DataFrame并没有提供插入一行数据的方法,可能是因为会打乱索引吧,一种方法是,先插入一个索引,然后插入一行数据,然后重新设置索引:

# reference:https://blog.csdn.net/sunmingyang1987/article/details/105486710
def insert_addidx(df, row, idx):df = df.reindex(index=df.index.insert(idx, str(idx)))df.loc[str(idx)] = rowdf.reset_index(drop=True)return df

这里的df是DataFrame,row是df.iloc[[rownum], :]或者df.loc[index]所得的一行DataFrame,idx是int值表示行索引。
需注意获取一行数据的方式是:df.iloc[[idx], :],而不是df.iloc[idx, :]。

追加数据

追加数据其实可以用:
df.append(row)的方式,但是会报warning,官方建议的方法是:

new_df = pd.concat([new_df, df.iloc[[idx], :]], axis=0)

需注意获取一行数据的方式是:df.iloc[[idx], :],而不是df.iloc[idx, :],也意味着可以一次追加多个列。

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

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

相关文章

抖店选品都怎么选品?什么样的产品更吸引人,更具有购买力?

大家好,我是电商花花。 抖店选品一直都是我们无货源商家的核心问题,不管是出单、还是爆单,店铺想要有销量的前提下都是选品。 很多人一上来就是就是选品,没有选品经验还瞎选品,结果到最后选了一堆出单的产品&#xf…

回声消除原理

回声消除原理 回声消除是一种音频处理技术,用于消除声学空间中发生的回声。其基本原理如下: 1. 远端信号估计 捕获远端扬声器发出的信号(通常通过麦克风)。使用自适应滤波器估计远端信号,即回声信号。 2. 回声信号…

用wordpress建外贸独立站的是主流的外贸建站方式

WordPress因其易用性、灵活性和强大的功能支持,成为了外贸企业首选的网站建设平台。 从技术和功能角度来看,WordPress提供了丰富的主题和插件,这些都是构建专业外贸网站所必需的。例如,有专门为外贸网站设计的主题和插件&#xf…

【栈】Leetcode 验证栈序列

题目讲解 946. 验证栈序列 算法讲解 在这里就只需要模拟一下这个栈的出栈顺序即可:使用一个stack,每次让pushed里面的元素入栈,如果当前栈顶的元素等于poped容器中的当前元素,因此就需要让栈顶元素出栈,poped的遍历…

一篇文章帮你搞定微软云计算证书Renew

IT证书都有过期的时间,像AWS是3年有效期,谷歌是2年,微软是1年,那这些证书到期该怎么Renew更新呢? 小李哥最近的微软AZ-204证书要到期了,到期前半年就会收到Microsoft发来提醒邮件。大家在这半年内任何时间都…

500行代码实现贪吃蛇(2)

文章目录 3. 贪吃蛇的具体实现 3. 贪吃蛇的具体实现 首先,我们要让整个程序适应本地化 int main() {//修改适配本地中文环境setlocale(LC_ALL, "");return 0; }蛇身节点的创建 //蛇身结点的定义 typedef struct SnakeNode {int x; int y;struct SnakeN…

Unity 性能优化之LOD技术(十)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 LOD技术效果一、LOD技术是什么?二、LODGroup组件介绍三、LODGroup组件使用步骤添加组件添加模型 四、Project Settings中与LOD组件相关参数总结 L…

【DevOps】Linux 内核网络子系统全面指南与性能调优

目录 一、Linux 内核网络子系统 1. Netfilter 主要特性 工作流程 2. Traffic Control (TC) 主要特性 工作流程 3. Socket 主要特性 工作流程 二、内核参数优化 1. net.ipv4.tcp_window_scaling 2. net.core.netdev_max_backlog 3. net.ipv4.tcp_rmem 和 net.ipv4…

第33次CSP认证Q1:词频统计

🍄题目描述 在学习了文本处理后,小 P 对英语书中的 𝑛n 篇文章进行了初步整理。 具体来说,小 P 将所有的英文单词都转化为了整数编号。假设这 𝑛n 篇文章中共出现了 𝑚m 个不同的单词,则把它们…

网络编程套接字 (二)---udosocket

本专栏内容为:Linux学习专栏,分为系统和网络两部分。 通过本专栏的深入学习,你可以了解并掌握Linux。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:网络 🚚代码仓库:小小unicorn的代…

C++学习第二十九课:C++ 输入输出流详解:从基础到高级应用

在 C 中,流(stream)是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动,这些字节可以从一个地方流向另一个地方,例如从键盘输入到程序中,或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…

Qt中正则表达式的用法

一.基本功能介绍: 在Qt中,可以使用QRegularExpression类来处理正则表达式。以下是一些常用的正则表达式用法: 1.创建正则表达式对象: QRegularExpression regex("pattern"); 2.匹配字符串: QString str …

LeetCode 2960.统计已测试设备:看测试了多少次

【LetMeFly】2960.统计已测试设备:看测试了多少次 力扣题目链接:https://leetcode.cn/problems/count-tested-devices-after-test-operations/ 给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比…

【QEMU系统分析之实例篇(十七)】

系列文章目录 第十七章 QEMU系统仿真的机器创建分析实例 文章目录 系列文章目录第十七章 QEMU系统仿真的机器创建分析实例 前言一、QEMU是什么?二、QEMU系统仿真的机器创建分析实例1.系统仿真的命令行参数2.配置加速器configure_accelerators()do_configure_icount…

蓝桥杯13届JAVA A组 国赛

​​​​​​​ package 蓝桥杯国赛; // 贪心选个数最少的进行摆 // 2:1 ,3:1, 4:1,5 : 3,6:3,7:1 // 选 1,7,4,2,3,5,9 // 然后都选满10个 public class 火彩棒数字 {public static void main(String[] a…

【CTFHub】HTTP 请求方式 302跳转 cookie WP

1.请求方式 打开给出的URL进入一个页面,提示原方法是GET,用CTFHUB方法就能获得flag 思路:抓包,将GET方法改成CTFHUB方法进行重新发送请求,查看响应情况 1.打开代理服务器 2.打开BurpSuite 刷新页面获得拦截 3.发送…

【Excel VBA】深入理解 VBA 中的 CallByName 函数

动态调用方法与属性:深入理解 VBA 中的 CallByName 函数 昨天在介绍Choose函数在复杂的VBA应用程序开发中,有时我们需要根据运行时的情况来决定调用哪个对象的哪个方法或属性。这种灵活性可以通过 CallByName 函数实现。在本篇博客中,田辛老…

网络Http和Socket通讯(基于面试)

每日一句:想得到世上最好的东西,先得让世界看到最好的你 目录 面试问OSI或TCP/IP,怎么回答? 面试问HTTP? 面试问Get类型,Pot类型区别? 面试什么是Socket套接字? 面试问什么是数据粘包&…

qt for android 的架构原理

qt for android实现架构,分享这几幅很不错图。来自于 《Qt 林斌:整合Android IVI平台打造统一的Qt数字座舱体验》 1.实现架构图 2.qt for android能力 3.java 和 qt混合开发 4. AutoMotive

46寸硅片为什么要留平边(flat)?

知 识星球(星球名: 芯片制造与封测社区,星球号: 63559049)里的学员问: 2, 4, 6寸硅片都有 平 边,它们有什么作用 ? 硅片的平边(Flat&…