程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python基礎——csv文件處理及可視化

編輯:Python

csv文件處理及可視化

(1)csv文件格式:要在文本文件中存儲數據,最簡單的方式是將數據作為一系列以逗號( , )分隔的值寫入文件【形式:數據之間用,號隔開
#例如:2014-1-5,61,44,26,18,7,-1,56,30,9,30.34,30.27,30.15,10,4,0.00,0,195
(2)分析csv文件頭
#csv處理模塊包含在Python標准庫中,可以分析csv文件的數據行,可以快速提取感興趣的值。

def read_csv2():
filename = 'D:\python_test1\chapter_16_sitka_weather_07-2014.csv' # 文件所在路徑
with open(filename) as f:#打開文件,並創建文件對象
#將文件對象作為參數傳給csv.reader(),並創建一個與該文件相關聯的閱讀器實例,閱讀器對象存儲在reader中
#reader處理文件中以逗號分隔的第一行數據,並將每項數據都作為一個元素存儲在列表中
#此時光標位於-1的位置
reader = csv.reader(f)
#模塊csv包含函數next(),調用它並將閱讀器對象傳遞給它時,它將返回文件中的下一行。
#從-1行開始,每調用一次,獲取下一行。
header_row = next(reader)
#enumerate()獲取每個元素的索引及其值
for index, column_header in enumerate(header_row):
print(index, column_header)

(3)可視化實例:繪制整年的天氣圖

def get_allyear():
filename="D:\python_test1\chapter_16_sitka_weather_2014.csv"
with open(filename) as f:#打開文件
#創建一個csv文件閱讀器對象,當前文件的光標位於-1處
reader=csv.reader(f)
#光標移動到第1行
next(reader)
#新建存儲信息的列表
highs,dates,lows=[]#最高溫度、日期、最低溫度
#在數據集中獲取需要的數據,並存入相應的數據集
#由於csv文件存儲的都是文本字符型數據,因此取出來的也是文本型數據,若需進行數據處理,應將其轉為數值型數據 int()進行強制類型轉換
for row in reader:
#存放最高溫度
highs.append(int(row[1]))
#存放日期
date=datetime.strptime(row[0],"%Y-%m-%d")
dates.append(date)
#存放最低溫度
lows.append(int(row[3]))
#繪制圖形
#設置圖像大小
fig=plt.figure(dpi=128,figsize=(10,6))
#畫圖 兩個plot繪制在一張圖上
plt.plot(dates,highs,c="red",alpha=0.5)
plt.plot(dates,lows,c="blue",alpha=0.5)
# alpha 設置不透明度 Alpha值為0表示完全透明,1(默認設置)表示完全不透明 通過設置alpha值可設置線條的透明度
#fill_between()設置填充區域,實參facecolor指定了填充區域的顏色 dates表明x軸范圍, highs, lows 表示兩個y軸范圍,由x范圍和y軸范圍共建的區域為填充的區域
#作用:讓填充區域將兩個數據系列連接起來的同時不分散觀察者的注意力。
plt.fill_between(dates, highs, lows, facecolor='green', alpha=0.1)
#設置相應的標簽
plt.title("Daily high and low temperatures - 2014", fontsize=24)
plt.xlabel("",fontsize=16)
fig.autofmt_xdate() # 繪制斜的日期標簽,以免它們彼此重疊
plt.ylabel("Temperature (F)", fontsize=16)
# 設置刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()
#若存在缺失值
#則采用try:...except 異常:... else:的格式進行異常捕捉

【重難點&新知識】:
(1)設置圖像大小(自定義圖像實例)

fig=plt.figure(dpi=128,figsize=(10,6))

語法:

figure(num=None, figsize=None, dpi=None, facecolor=None,edgecolor=None, frameon=True)

參數解析:

num:圖像編號或名稱,數字為編號 ,字符串為名稱
figsize:指定figure的寬和高,單位為英寸;
dpi參數:指定繪圖對象的分辨率,即每英寸多少個像素,缺省值為80
facecolor:背景顏色
edgecolor:邊框顏色
frameon:是否顯示邊框

補充:

fig.autofmt_xdate()#繪制斜的日期標簽,以免它們彼此重疊

(2)在同一個折線中繪制兩條圖線
語法邏輯:為同一個plt實例添加數據,調用多次plot函數,就可以在同一張圖中繪制多條折線。

#畫圖 兩個plot繪制在一張圖上
plt.plot(dates,highs,c=“red”,alpha=0.5)
plt.plot(dates,lows,c=“blue”,alpha=0.5)
#dates x軸 highs/lows y軸 alpha=0.5設置不透明度

(3) 設置圖像填充區域
fill_between()設置填充區域

plt.fill_between(dates, highs, lows, facecolor=‘green’, alpha=0.1)

參數解析:

#實參facecolor指定了填充區域的顏色 dates表明x軸范圍, highs, lows 表示兩個y軸范圍,由x范圍和y軸范圍共建的區域為填充的區域
#作用:讓填充區域將兩個數據系列連接起來的同時不分散觀察者的注意力。

【結果分析】:


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved