#CSV和JSON格式的資料在python上的處理
CSV和JSON資料型別都是都是常見的兩種在python中的資料分析型別,這里我有兩個入門專案詳細講解這兩種資料的處理,
處理一個CSV形式的地方的天氣的資料,然后創建一個表格;
分析JSON形式的地震資料,然后用plotly繪制一幅散點圖
專案一
import csv#csv這個模塊是用于分析這種格式分析的模塊
from datetime import datetime#處理事件的模塊
from matplotlib import pyplot as plt#我們要畫折線圖,需要用到這個庫的畫圖功能
filename = 'death_valley_2018_simple.csv'#檔案的地址可以根據需求設定
with open(filename) as f:#打開檔案,把它賦給f
reader = csv.reader(f)#傳遞給reader
header_row = next(reader)
#讀取檔案相關的檔案頭,這里如果用print的話你會看到每行都行都有哪些資料,來分析出我們要的最高溫和最低溫在哪個位置
# 當分析出來后,我們就可以從檔案獲取資料了,我們要的資料的在4、5行
dates, highs, lows = [], [], []#創建串列收錄資料、最高、最低值
for row in reader:
current_date = datetime.strptime(row[2], '%Y-%m-%d')
try:
high = int(row[4])
low = int(row[5])
except ValueError:
print(f"Missing data for {current_date}")
else:
dates.append(current_date)
highs.append(high)
lows.append(low)
#把資料寫入串列中
# 繪制圖形
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=0.5)
ax.plot(dates, lows, c='blue', alpha=0.5)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
# 設定一些表頭、橫軸、縱軸的名稱等資訊
title = "Daily high and low temperatures - 2018\nDeath Valley, CA"
plt.title(title, fontsize=20)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()#顯示影像

專案二
import json#這是在處理json資料時要用的模塊
import plotly.express as px#這個plotly的高級介面需要用來繪制影像
import pandas as pd#我們這里對影像進行優化會用到這個資料分析工具
filename = 'eq_data_30_day_m1.json'
with open(filename) as f:
all_eq_data = json.load(f)
#把檔案的資料寫入all_eq_data中
#根據對資料的分析展開,我們會獲得一系列的重要的資訊,這里我就直接給出了,資料與鍵‘features'有關,所以把它儲存下來
all_eq_dicts = all_eq_data['features']
mags, titles, lons, lats = [], [], [], []#創建空串列
for eq_dict in all_eq_dicts:
mag = eq_dict['properties']['mag']
title = eq_dict['properties']['title']
lon = eq_dict['geometry']['coordinates'][0]
lat = eq_dict['geometry']['coordinates'][1]
mags.append(mag)
titles.append(title)
lons.append(lon)
lats.append(lat)
#提取震級、位置標題、經緯度
data = pd.DataFrame(
data=zip(lons, lats, titles, mags), columns=['經度', '緯度', '位置', '震級']
)
#因為我們這里要使用到pandas資料分析工具,我們這里對資料進行封裝
fig = px.scatter(
data,
x='經度',
y='緯度',
range_x=[-200, 200],
range_y=[-90, 90],
#我們假定了經緯度的繪制范圍
width=800,
height=800,
title='全球地震散點圖',
size='震級',
size_max=10,
color='震級',#這里定制標記顏色,震級可以按照不同顏色顯示,數值越大顏色越黃,從藍到紅到黃漸變
hover_name='位置',
)
fig.write_html('global_earthquakes.html')#將視圖保存為html檔案,可以在瀏覽器打開
fig.show()#如果用的是jupyter,使用這個可以直接顯示散點圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254946.html
標籤:python
