Python用字典統(tǒng)計CSV數(shù)據(jù)的實現(xiàn)示例
在數(shù)據(jù)分析過程中,CSV(Comma-Separated Values)文件是一種常見的數(shù)據(jù)存儲格式。Python 提供了許多處理CSV文件的工具,其中字典(dictionary)是一個非常高效的數(shù)據(jù)結(jié)構(gòu),可以用來統(tǒng)計和處理CSV數(shù)據(jù)。本文將詳細介紹如何使用Python字典統(tǒng)計CSV數(shù)據(jù),并通過多個實例來說明其應(yīng)用場景。
一、準備工作
在開始之前,我們需要安裝和導(dǎo)入必要的庫。這里我們使用Python內(nèi)置的csv模塊來讀取CSV文件,同時使用collections模塊中的defaultdict來方便地統(tǒng)計數(shù)據(jù)。
import csv from collections import defaultdict
二、讀取CSV文件
首先,讓我們看看如何讀取一個CSV文件。假設(shè)我們有一個名為data.csv的文件,內(nèi)容如下:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Alice,32,New York
David,25,Chicago
我們可以使用以下代碼來讀取文件:
filename = 'data.csv' with open(filename, mode='r', newline='') as file: reader = csv.DictReader(file) data = [row for row in reader] print(data)
運行上述代碼會輸出:
[{'name': 'Alice', 'age': '30', 'city': 'New York'},
{'name': 'Bob', 'age': '25', 'city': 'Los Angeles'},
{'name': 'Alice', 'age': '32', 'city': 'New York'},
{'name': 'David', 'age': '25', 'city': 'Chicago'}]
三、使用字典統(tǒng)計數(shù)據(jù)
統(tǒng)計每個城市的人員數(shù)量
我們可以使用字典來統(tǒng)計每個城市的人員數(shù)量:
city_count = defaultdict(int) for row in data: city = row['city'] city_count[city] += 1 print(dict(city_count))
運行結(jié)果:
{'New York': 2, 'Los Angeles': 1, 'Chicago': 1}
統(tǒng)計每個名字出現(xiàn)的次數(shù)
類似地,我們可以統(tǒng)計每個名字出現(xiàn)的次數(shù):
name_count = defaultdict(int) for row in data: name = row['name'] name_count[name] += 1 print(dict(name_count))
運行結(jié)果:
{'Alice': 2, 'Bob': 1, 'David': 1}
統(tǒng)計每個城市的平均年齡
我們還可以統(tǒng)計每個城市的平均年齡。這需要兩個步驟:首先統(tǒng)計每個城市的總年齡和人數(shù),然后計算平均年齡。
city_age_sum = defaultdict(int) city_count = defaultdict(int) for row in data: city = row['city'] age = int(row['age']) city_age_sum[city] += age city_count[city] += 1 city_avg_age = {city: city_age_sum[city] / city_count[city] for city in city_age_sum} print(city_avg_age)
運行結(jié)果:
{'New York': 31.0, 'Los Angeles': 25.0, 'Chicago': 25.0}
四、多場景應(yīng)用
除了上述基礎(chǔ)統(tǒng)計,字典還可以用于更復(fù)雜的數(shù)據(jù)處理場景。下面是幾個應(yīng)用實例:
統(tǒng)計每個名字在每個城市的出現(xiàn)次數(shù)
name_city_count = defaultdict(lambda: defaultdict(int)) for row in data: name = row['name'] city = row['city'] name_city_count[name][city] += 1 print({name: dict(city_count) for name, city_count in name_city_count.items()})
運行結(jié)果:
{'Alice': {'New York': 2},
'Bob': {'Los Angeles': 1},
'David': {'Chicago': 1}}
統(tǒng)計每個年齡段的人數(shù)
假設(shè)我們要統(tǒng)計20-29歲、30-39歲等年齡段的人數(shù):
age_group_count = defaultdict(int) for row in data: age = int(row['age']) if 20 <= age < 30: age_group = '20-29' elif 30 <= age < 40: age_group = '30-39' # 其他年齡段可以繼續(xù)添加 else: age_group = 'Other' age_group_count[age_group] += 1 print(dict(age_group_count))
運行結(jié)果:
{'30-39': 2, '20-29': 2}
五、總結(jié)
本文介紹了如何使用Python字典統(tǒng)計CSV數(shù)據(jù),并通過多個實例展示了其在不同場景下的應(yīng)用。字典作為一種靈活高效的數(shù)據(jù)結(jié)構(gòu),可以極大地簡化數(shù)據(jù)統(tǒng)計和處理的過程。希望這些示例能夠幫助你更好地理解和應(yīng)用Python字典來處理實際數(shù)據(jù)分析任務(wù)。
到此這篇關(guān)于Python用字典統(tǒng)計CSV數(shù)據(jù)的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python 字典統(tǒng)計CSV內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Chrome插件實現(xiàn)爬蟲過程圖解
這篇文章主要介紹了Python使用Chrome插件實現(xiàn)爬蟲,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Python下使用Scrapy爬取網(wǎng)頁內(nèi)容的實例
今天小編就為大家分享一篇Python下使用Scrapy爬取網(wǎng)頁內(nèi)容的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法
今天小編就為大家分享一篇Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Django項目uwsgi+Nginx保姆級部署教程實現(xiàn)
這篇文章主要介紹了Django項目uwsgi+Nginx保姆級部署教程實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04如何解決django配置settings時遇到Could not import settings ''conf.loca
這里記錄一下在項目中遇到django配置settings時遇到Could not import settings 'conf.local'的解決方法,有同樣問題的小伙伴們參考下吧2014-11-11