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