Python讀取CSV文件并進(jìn)行數(shù)據(jù)可視化
一.引入pandas、matplotlib 三方庫
使用 pip install pandas / pip install matplotlib 在終端Terminal下載
二.讀取CSV文件
在讀取文件之后,我們進(jìn)行print語句輸出,看一下數(shù)據(jù)是否完整
import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('某超市的銷售數(shù)據(jù).csv') print(data)
報(bào)錯(cuò):UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte
意思是用特定的編碼方式 UTF-8 解碼字節(jié)數(shù)據(jù)時(shí)發(fā)生的錯(cuò)誤 ,CSV文件的實(shí)際編碼方式可能是用其他編碼方式(如 GBK, GB2312, ISO-8859-1 等)編碼的
我們?cè)赑yCharm打開該CSV文件發(fā)現(xiàn)是亂碼的,是因?yàn)镃SV文件在保存時(shí)使用的編碼格式與打開時(shí)所用的編碼格式不匹配導(dǎo)致的
那我們采取 gbk 編碼方式試一試
import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('某超市的銷售數(shù)據(jù).csv', encoding='gbk') print(data)
這次 4萬余行,17列的數(shù)據(jù) 完整的輸出了,我們就可以對(duì)它進(jìn)行處理
三.數(shù)據(jù)的處理
我們通過瀏覽部分?jǐn)?shù)據(jù),發(fā)現(xiàn)有些類名是重復(fù)的,要進(jìn)行重復(fù)數(shù)據(jù)合并
繪制柱狀圖只需要兩列數(shù)據(jù)就可以,這里選取第三列名稱和第十四列銷售數(shù)量,以下代碼進(jìn)行數(shù)據(jù)聚合和數(shù)據(jù)提取然后用上述的讀取csv文件代碼并print輸出,可以看到正確的數(shù)據(jù)
# 按照指定列(這里第3列是要依據(jù)合并的列,可按需修改)對(duì)重復(fù)數(shù)據(jù)進(jìn)行合并,求和第14列的值 merged_data = data.groupby(data.columns[2])[data.columns[13]].sum().reset_index() # 將合并后的數(shù)據(jù)保存為新的CSV文件,名為new_data.csv,可按需更改 merged_data.to_csv('new_data.csv', index=False)
四.數(shù)據(jù)可視化
柱狀圖基本要素
plt.bar(x, y, width=0.5, alpha=0.5, color='pink')
其中 x
和 y
參數(shù)分別指定條形圖中每個(gè)條形的位置和高度,width
:這是一個(gè)浮點(diǎn)數(shù)或數(shù)組,指定條形的寬度,alpha
:這是一個(gè)介于 0 和 1 之間的浮點(diǎn)數(shù),指定條形的透明度。alpha=0.5
表示條形是半透明的,color指顏色
自定義函數(shù)類型
def draw_bar_chart(): plt.bar(new_data.iloc[:, 0], new_data.iloc[:, 1]) #new_data.iloc[:, 0]:這部分代碼使用 .iloc 方法從 new_data DataFrame 中選取所有行(: 表示所有行)的第一列(索引為 0 的列)。這些值將作為條形圖的 x 軸坐標(biāo)。 #new_data.iloc[:, 1]:這部分代碼同樣使用 .iloc 方法從 new_data DataFrame 中選取所有行的第二列(索引為 1 的列)。這些值將作為條形圖的高度(即 y 軸的值)。 plt.title('代做找我最靠譜') plt.rcParams['font.sans-serif'] = ['SimHei'] #指定字體 plt.rcParams['axes.unicode_minus'] = False # 正常顯示負(fù)號(hào) plt.xlabel(new_data.columns[0])#x軸標(biāo)簽 plt.ylabel(new_data.columns[1])#y軸標(biāo)簽 plt.show()
五.效果展示
這里只是列舉了一個(gè)柱狀圖的例子,我相信看懂的小伙伴面對(duì)其他類型的如折線圖,餅圖,詞云,雷達(dá)圖等也能夠?qū)W以致用,感謝你的關(guān)注!
到此這篇關(guān)于Python讀取CSV文件并進(jìn)行數(shù)據(jù)可視化的文章就介紹到這了,更多相關(guān)Python讀取CSV內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)與借鑒價(jià)值,需要的可以參考一下2022-12-12python如何獲取網(wǎng)絡(luò)數(shù)據(jù)
這篇文章主要介紹了python如何獲取網(wǎng)絡(luò)數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04pandas將numpy數(shù)組寫入到csv的實(shí)例
今天小編就為大家分享一篇pandas將numpy數(shù)組寫入到csv的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07python3 map函數(shù)和filter函數(shù)詳解
這篇文章主要介紹了python3 map函數(shù)和filter函數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)實(shí)現(xiàn)gltf預(yù)覽圖的示例詳解
隨著3D技術(shù)的不斷發(fā)展,GLTF逐漸成為了Web和移動(dòng)應(yīng)用程序中最流行的3D文件格式之一,本文將介紹如何使用Python生成GLTF模型的預(yù)覽圖,需要的可以了解下2025-02-02人工智能學(xué)習(xí)Pytorch梯度下降優(yōu)化示例詳解
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch梯度下降優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題
今天小編就為大家分享一篇解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python實(shí)現(xiàn)讀取.nc數(shù)據(jù)并提取指定時(shí)間與經(jīng)緯度維度對(duì)應(yīng)的變量數(shù)值
這篇文章主要為大家詳細(xì)介紹了如何使用Python語言的netCDF4庫實(shí)現(xiàn)讀取.nc格式的數(shù)據(jù)文件,并提取指定維(時(shí)間、經(jīng)度與緯度)下的變量數(shù)據(jù),需要的可以了解下2024-02-02python并發(fā)編程多進(jìn)程 模擬搶票實(shí)現(xiàn)過程
這篇文章主要介紹了python并發(fā)編程多進(jìn)程 模擬搶票實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08