數據分析:合并一

🔷 DA37:統計運動會項目報名人數(僅輸出有人報名的項目)

? 題目描述

給定兩個 CSV 文件:

  • items.csv:包含項目信息(item_id, item_name, location)
  • signup.csv:包含員工報名信息(employee_id, name, sex, department, item_id)

要求:統計每個項目的報名人數,只輸出報名人數不為 0 的項目。

💡 即:只要有人報了的項目才顯示。


? 正確代碼

import pandas as pddf_items = pd.read_csv('items.csv', sep=',')
df_signup = pd.read_csv('signup.csv', sep=',')# 內連接合并,自動過濾沒有報名記錄的項目
df_merge = pd.merge(df_items, df_signup, on='item_id')# 按項目名稱分組,統計 employee_id 的數量
result = df_merge.groupby('item_name')['employee_id'].size()print(result)

🔍 代碼解析

解釋
pd.merge(..., on='item_id')使用?item_id?作為鍵進行內連接(默認),只有在兩個表中都存在的項目才會保留 → 自動排除無人報名的項目
.groupby('item_name')按“項目名稱”分組
['employee_id'].size()統計每組中有多少條記錄(即報名人數)<br>?? 注意:size()?包括 NaN 值;若用?count()?則會跳過 NaN(更安全)
print(result)輸出 Series:索引是項目名,值是人數

? 特點:使用 inner join(默認),天然只保留有報名數據的項目。


🧠 擴展知識

知識點說明
merge()?默認行為不指定?how?時,默認為?'inner',即只保留兩表共有的 key
groupby().size()?vs?.count()<ul><li>size():返回每組總行數,包括 NaN</li><li>count():對各列統計非空值個數</li></ul>在此場景下兩者等價(employee_id 不為空)
輸出格式返回的是一個?Series,打印時自動省略列名,符合題目要求

🔷 DA38:統計運動會項目報名人數(二)—— 包含無人報名的項目

? 題目描述

同上,但這次要求:

輸出 items.csv 中所有項目的報名人數,即使沒人報名也顯示為 0。


? 正確代碼

import pandas as pddf_items = pd.read_csv('items.csv', sep=',')
df_signup = pd.read_csv('signup.csv', sep=',')# 左連接:以 items 為主表,保留所有項目
df_merge = pd.merge(df_items, df_signup, on='item_id', how='left')# 分組并使用 count 統計非空 employee_id 數量
result = df_merge.groupby('item_name')['employee_id'].count()print(result)

🔍 代碼解析

關鍵點解釋
how='left'左連接,確保?df_items?中的所有項目都被保留<br>→ 即使沒人報名,也會出現在結果中,employee_id?為 NaN
.count()只統計非 NaN 的值 → 無人報名則為 0
groupby('item_name')按項目名聚合
print(result)輸出所有項目及其報名人數(含 0)

? 核心思想:主表驅動 + left join + count 處理缺失值


🧠 擴展知識

技巧應用場景
left join主表完整、從表補充信息的經典模式(如商品+銷量)
fillna(0)如果你想顯式補零:df_merge['employee_id'].fillna(0)
reindex()若想確保所有項目按?items.csv?順序出現,可用?reindex

🔷 DA39:多報名表的運動項目人數統計

? 題目描述

新增一個文件 signup1.csv,是另一個部門的報名數據。 要求:將 signup.csvsignup1.csv 合并后,再統計各項目的報名人數(只輸出有人報名的)。


? 正確代碼

import pandas as pditem = pd.read_csv("items.csv", sep=",")
sign = pd.read_csv("signup.csv", sep=",")
sign1 = pd.read_csv("signup1.csv", sep=",")# 上下拼接兩個報名表
sign_m = pd.concat([sign, sign1], axis=0)# 與項目表內連接
m = pd.merge(sign_m, item, how="inner", on="item_id")# 按項目名分組,統計員工數量
print(m.groupby("item_name")["employee_id"].count())

🔍 代碼解析

步驟說明
pd.concat([sign, sign1], axis=0)將兩個報名表縱向堆疊(union),合并成一張大報名表
axis=0沿行方向拼接(上下接)
merge(..., how='inner')只保留存在于?items.csv?中的項目(防止無效 item_id)
groupby().count()統計每個項目的總報名人數(來自兩個文件)

? 重點:先合并報名數據,再關聯項目信息。


🧠 擴展知識

方法用途
pd.concat([...], ignore_index=True)重置行索引,避免重復 index
append()?已棄用推薦使用?concat?替代
去重處理若擔心重復報名:sign_m.drop_duplicates(subset=['employee_id', 'item_id'])

🔷 DA40:統計職能部門中報名標槍的員工信息

? 題目描述

找出 職能部門(functional) 中報名了 標槍(javelin) 的所有員工,并輸出他們的:

  • employee_id
  • name
  • sex

?? 注意:結果要重置索引(從 0 開始連續編號)


? 正確代碼

import pandas as pd df1 = pd.read_csv("items.csv", sep=',')
df2 = pd.read_csv("signup.csv", sep=',')# 先合并項目和報名信息
df = pd.merge(df1, df2, on='item_id')# 篩選條件:部門是 functional,項目是 javelin
df_fun = df[(df.department == 'functional') & (df.item_name == "javelin")]# 選擇指定列并重置索引
result = df_fun[["employee_id", "name", "sex"]].reset_index(drop=True)print(result)

🔍 代碼解析

步驟說明
pd.merge(..., on='item_id')獲取每個報名記錄對應的項目名稱
(df.A == X) & (df.B == Y)多條件篩選,注意括號和?&(不能用?and
df[[...]]選取特定列
.reset_index(drop=True)重新生成從 0 開始的整數索引,丟棄原索引

? 輸出是一個 DataFrame,結構清晰。


🧠 擴展知識

技術點提示
條件邏輯運算符<ul><li>&:且</li><li>&#124;:或</li><li>~:非</li></ul>必須加括號!
字符串匹配若不確定拼寫可用:<br>df.item_name.str.contains('javelin', case=False)
query()?方法更簡潔的篩選方式:<br>df.query("department == 'functional' and item_name == 'javelin'")
drop=True避免舊索引變成新列

📚 總結對比表(四題核心差異)

題號目標關鍵操作連接方式聚合/篩選
DA37有人報名的項目人數merge + groupby + sizeinner (default)只輸出有數據的
DA38所有項目(含0人)merge + left + countleft顯示0人項目
DA39多報名表匯總concat + merge + countinner合并多個源數據
DA40特定人群信息查詢merge + 多條件篩選 + 列選擇inner輸出明細數據

🛠? 通用技巧總結

場景推薦做法
合并多個 CSV 報名表pd.concat([df1, df2], axis=0)
關聯項目信息pd.merge(..., on='item_id')
統計數量groupby().size()?或?.count()
保留主表全部數據how='left'
篩選滿足多個條件的數據(cond1) & (cond2)
輸出前清理索引.reset_index(drop=True)
防止拼寫錯誤檢查字段名:df.columns.tolist()

? 學習建議

  1. 動手實踐:把這幾道題的數據自己構造出來跑一遍。
  2. 理解 merge 類型:inner/left/right/outer 的區別是關鍵。
  3. 掌握 groupby 和 count/size:數據分析最常用組合。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WWW‘25一通讀 |圖Anomaly/OOD檢測相關文章(1)

寫在前面&#xff1a;進入新一輪學習階段&#xff0c;從閱讀開始。 本文分享的是WWW2025收錄的與作者研究相近的graph-based xx相關paper的閱讀筆記&#xff0c;含個人理解&#xff0c;僅供參考&#x1f604; 0x01 HEI&#xff1a;利用不變性原理實現異配圖結構分布偏移學習 J…

static_cast:C++類型系統的“正經翻譯官”

1. 背景與核心概念 1.1 C的“類型安全”哲學 想象一下&#xff0c;你所在的世界突然失去了所有規則&#xff1a;文字可以隨意變成數字&#xff0c;人可以瞬間變成椅子&#xff0c;汽車能飛上天變成飛機… 這聽起來像是瘋狂的夢境&#xff0c;但對于早期C語言來說&#xff0c;這…

【嵌入式原理系列-第八篇】USART從原理到配置全解析

目錄 一.通信領域基礎知識介紹 1.1 串行和并行通信 1.2 同步和異步傳輸 1.3 串口和COM口 1.4 通信協議標準以及物理層定義 1.5 物理層協議之TTL / RS-232 / RS-485 二.USART介紹 2.1 USART特點介紹 2.2 UART和TTL / RS-232 / RS-485 2.3 USART硬線流控介紹 2.4 USAR…

MariaDB介紹和MariaDB包安裝

文章目錄MariaDB介紹和安裝1.MariaDB介紹1.1 起源與背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 優化的存儲引擎1.2.3 企業級功能增強1.2.4 性能優化1.2.5 安全增強1.3 社區與生態1.4 應用場景1.5 總結2.MariaDB安裝2.1 主機初始化2.1.1 設置網卡名2.1.2 設置ip地址2.1.3 配置鏡…

雙指針與滑動窗口算法精講:從原理到高頻面試題實戰

引言&#xff1a;算法選擇的十字路口 在算法面試中&#xff0c;雙指針和滑動窗口如同兩把瑞士軍刀&#xff0c;能高效解決80%以上的數組和字符串問題。本文將深入解析這兩種技術的核心差異&#xff0c;結合力扣高頻題目&#xff0c;提供可直接復用的代碼。 一、算法核心思想解析…

蘋果MAC、MacBook air和pro安裝windows雙系統與iOS分發

文章目錄1. main1.1 準備工作1.2 啟動轉換助理1.3 Windows安裝1.4 蘋果電腦安裝Windows雙系統切換2. 蘋果(iOS)分發/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免簽上架2.4 超級簽名2.5 企業證書2.6 app分發系統Reference1. main 蘋果電腦安裝windows雙系統 https:…

ArcGIS定向影像(1)——非傳統影像輕量級解決方案

常常聽到這樣的需求&#xff0c;ArcGIS能讓用戶自己低成本的做出谷歌街景嗎&#xff1f;現在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能夠讓用戶不使用任何插件和擴展的情況下完成街景數據集的構建&#xff0c;數據管理&#xff0c;發布服務和調用的完整解決方案。非常體…

uni-app 網絡之封裝實戰HTTP請求框架

前言在uniapp開發中&#xff0c;網絡請求是每個應用都必不可少的功能模塊。一個優秀的網絡請求封裝不僅能提高開發效率&#xff0c;還能增強代碼的可維護性和可擴展性。本文將基于實際項目經驗&#xff0c;詳細介紹如何封裝一個高效、可維護的Uniapp網絡請求框架&#xff0c;并…

架構師成長之路-架構方法論

文章目錄前言一、先搞懂&#xff1a;架構師不僅僅是“技術大佬”&#xff0c;更是“問題解決者”1.1 架構師的分類&#xff1a;不止“開發架構師”一種1.2 架構師要關注什么&#xff1f;別只盯著技術1.3 架構師解決問題的4步心法&#xff1a;從定義到落地1.4 架構師的成長攻略&…

uniapp在微信小程序中實現 SSE 流式響應

前言 最近需要使用uniapp開發一個智能對話頁面&#xff0c;其中就需要使用SSE進行通信。 本文介紹下在uniapp中如何基于uni.request實現SSE流式處理。 在線體驗 #小程序:yinuosnowball SSE傳輸格式 返回輸出的流式塊: Content-Type為text/event-stream 每個流式塊均為 d…

STM32N6AI資料匯總

文章目錄前言一、STM32N6硬件資源1.1 NUCLEO-N657X0-Q1.2 STM32N6570-DK1.3 正點原子STM32N647二、STM32N6軟件資源2.1 STM32CubeN6例程資源包2.2 STM32圖像信號處理器&#xff08;ISP&#xff09;調優軟件2.3 正點原子N6開發板配套軟件三、AI軟件資源3.1 STM32N6 AI軟件包總結…

Flask學習筆記(一)

1、環境準備pip install Flask使用Flask開發第1個入門程序&#xff1a;from flask import Flask app Flask(__name__) app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run()Flask構造函數將當前模塊的名稱(__name__)作為參數。2、route函數ap…

CSP認證練習題目推薦(4)

思維、貪心、綜合 排隊打水 這道題目不算難&#xff0c;但是不注意還是會出現很多錯誤&#xff0c;比如結構體的書寫。以及自定義結構體排序。還有這里做的優化&#xff0c;使用前綴和記錄打水的等待時間&#xff0c;但是這里很容易出錯的點在于等待時間是應該是記錄的前一個…

MySQL 視圖的更新與刪除:從操作規范到風險防控

MySQL 視圖的更新與刪除&#xff1a;從操作規范到風險防控 視圖作為 “虛擬表”&#xff0c;其更新與刪除操作常常讓開發者困惑 ——“為什么更新視圖會報錯&#xff1f;”“刪除視圖會不會弄丟數據&#xff1f;” 實際上&#xff0c;80% 的視圖操作問題都源于對 “視圖依賴基表…

C 語言實現 I.MX6ULL 點燈(續上一篇)、SDK、deep及bsp工程管理

目錄 一、匯編點燈轉 C 語言實現 1. 關鍵字&#xff1a;volatile 2. 寄存器地址定義&#xff08;兩種方式&#xff09; &#xff08;1&#xff09;直接宏定義地址 &#xff08;2&#xff09;結構體封裝寄存器&#xff08;優化訪問&#xff09; 3. 核心功能代碼 &#xff…

DevOps實戰(7) - 使用Arbess+GitPuk+sourcefare實現Node.js項目自動化部署

Arbess 是一款國產開源免費的 CI/CD 工具&#xff0c;工具支持一鍵部署&#xff0c;頁面簡潔易用。本文將詳細介紹如何安裝配置使用GitPuk、sourcefare、Arbess系統&#xff0c;使用流水線拉取GitPuk源碼、使用sourcefare代碼掃描、構建安裝包并進行主機部署。 1、GitPuk 安裝…

算法,蒜鳥蒜鳥-P1-理解“雙指針”

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄引言1 雙指針&#xff1a;Two Pointers1.1 左右指…

使用cookiecutter創建python項目

一、關于Python項目結構Python 項目并沒有完全統一的 “固定結構”&#xff0c;但行業內有一些廣泛遵循的約定俗成的目錄結構&#xff08;尤其針對可分發的包或大型項目&#xff09;。同時&#xff0c;確實有工具可以快速生成這些標準化結構&#xff0c;提高開發效率&#xff0…

臺積電生態工程深度解析:從晶圓廠到蜂巢的系統架構遷移

當半導體巨頭將工廠視為生態系統&#xff0c;用工程思維解決環境問題概述&#xff1a;生態系統的工程化再造臺積電近日開展的"積蜜"項目絕非簡單的企業CSR行為&#xff0c;而是一場將生態系統視為復雜系統進行工程化改造的技術實踐。本文將從系統架構、數據監控、循環…

從零實現一個簡易計算器

最近在刷算法題時&#xff0c;遇到了實現計算器的問題。一開始覺得很簡單&#xff0c;但真正動手實現時才發現其中有很多細節需要考慮。今天就來分享一下我的實現思路和學到的經驗。問題分析我們需要實現一個能夠處理加減乘除四則運算的計算器&#xff0c;要正確處理運算符的優…