1.分析CSV文件頭 P313
import csv
filename = 'death_valley_2014.csv'
with open(filename) as f:
reader = csv.reader(f) #創建一個與文件相關聯的閱讀器對象,並存儲在reader中,只能在with代碼塊中使用
header_row = next(reader) #返回文件的下一行,這裏只調用了一次,所以返回的是文件的第一行
2.模塊datetime P316
from datetime import datetime
first_date = datetime.striptime('2014-7-1', '%Y-%m-%d')#將字符創‘2014-7-1’轉換成表示相應日期的對象
3.繪製斜的x軸標籤 P318
fig.autofmt_xdate()
4.給圖標區域着色 P320
使用方法fill_between(),它接受一個x值系列和兩個u值系列,並填充兩個y值系列之間的空間。
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)#alpha指定顏色透明度,0表示完全透明,1表示完全不透明。
5.錯誤檢查 P321
如果數據中某個值爲空,python無法將空字符串轉換爲整數顯示在圖表上。
爲此:
try:
current_date = datetime.strptime(row[0], "%Y-%m-%d")
high = int(row[1])
low = int(row[3])
except ValueError: #缺少一項數據時,Python會引發ValueError異常
print(current_date, 'missing data')
else:
dates.append(current_date)
highs.append(high)
lows.append(low)
6.下載數據 P326
json_url = 'https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
# 讀取數據
req = requests.get(json_url ) #request通過get()方法想服務器發送請求,返回的結果存儲在變量req中
# 將數據寫入文件
with open('btc_close_2017_urllib.json', 'w') as f:
f.write(req.text) #先轉換成字符再寫到文件中/write() argument must be str, not list
file_requests = req.json() #將數據轉換成Python 列表
print(file_requests)
7.將兩個列表打包成一個元組,返回列表格式 P332
x = [1,2,3]
y = [4,5,6]
>>>c = zip(x,y)
[(1,4),(2,5),(3,6)]
8.按每個元組中第一個元素分組 P332
for x, y in groupby(c, key=lambda _: _[0]): #x返回索引,y返回一個迭代器,包含了所有分組的列表
9.將一週七天的英文單詞替換成1-7的整數 P334
idx_week = dates.index('2017-12-11')
wd = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
weekdays_int = [wd.index(w) + 1 for w in weekdays[1:idx_week]]
weekdays是一個存儲了星期幾的列表