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.pswp.cn/web/10105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10105.shtml
英文地址,請注明出處:http://en.pswp.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&…