日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python画图横轴刻度间隔设置为3个月_Python 天气情况数据分析及可视化

發布時間:2024/1/23 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python画图横轴刻度间隔设置为3个月_Python 天气情况数据分析及可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 天氣情況數據分析及可視化

環境配置

Pycharm開發環境

python 版本 python3.7

Anconda 集成開發環境

第三方庫導入

## pip install 模塊 清華大學鏡像源

import requests

from bs4 import BeautifulSoup

import io

import sys

import pandas

from matplotlib import pyplot as plt

步驟

1.爬蟲requests 獲取數據

2.pandas 處理數據

3.matplotlib 繪制圖形

4.其他 保存數據進入csv格式,簡單處理,例如雷達圖

小案例

雷達圖

#-*- codeing = utf-8 -*-

#@Time : 2020/6/2 20:07

#@Author : dele

#@File : demo.py

#@Software: PyCharm

# 雷達圖

import pygal

# pip install pygal 安裝模塊

rader_chart = pygal.Radar()

rader_chart.title = '成績分析'

rader_chart.x_labels = ["數學","英語","文綜","理綜","體育"]

rader_chart.add('StdudetA',[139,122,80,250,10])

rader_chart.add('StdudetB',[129,100,80,250,40])

rader_chart.add('StdudetC',[150,100,80,150,60])

rader_chart.add('StdudetD',[99,140,80,150,90])

rader_chart.render_to_file('radar_chart.svg')

效果

天氣案例

爬取天氣網站地址http://www.tianqihoubao.com/lishi/

然后一直選擇找到你需要的數據地址

例如:如圖

進行網頁分析 F12檢查網頁分析源代碼

Python 爬蟲代碼分析

Pandas matplotlib 模塊

Pandas

pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。 ##### 基本功能

1. 數據文件讀取/文本數據讀取

2. 索引、選取和數據過濾

3. 算法運算和數據對齊

4. 函數的應用和映射

5. 重置索引

6. 數學統計方法

matplotlib

Matplotlib 是一個 Python 的 2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形 。 通過 Matplotlib,開發者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。

Matplotlib基礎知識

1.Matplotlib中的基本圖表包括的元素

x軸和y軸

水平和垂直的軸線

x軸和y軸刻度

刻度標示坐標軸的分隔,包括最小刻度和最大刻度

x軸和y軸刻度標簽

表示特定坐標軸的值

繪圖區域

實際繪圖的區域

2.hold屬性

hold屬性默認為True,允許在一幅圖中繪制多個曲線;將hold屬性修改為False,每一個plot都會覆蓋前面的plot。

但是不推薦去動hold這個屬性,這種做法(會有警告)。因此使用默認設置即可。

3.網格線

grid方法

使用grid方法為圖添加網格線

設置grid參數(參數與plot函數相同)

.lw代表linewidth,線的粗細

.alpha表示線的明暗程度

4.axis方法

如果axis方法沒有任何參數,則返回當前坐標軸的上下限

5.xlim方法和ylim方法

除了plt.axis方法,還可以通過xlim,ylim方法設置坐標軸范圍

6.legend方法

#-*- codeing = utf-8 -*-

#@Time : 2020/6/2 20:26

#@Author : dele

#@File : weather.py

#@Software: PyCharm

import requests

from bs4 import BeautifulSoup

import io

import sys

import pandas

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

def get_data(weather_url):

rseponse = requests.get(weather_url)

html = rseponse.content.decode('gbk')

soup = BeautifulSoup(html,'html.parser')

tr_lsit = soup.find_all('tr')

print(tr_lsit)

dates,conditions,temp = [],[],[]

for data in tr_lsit[1:]:

sub_data = data.text.split()

dates.append(sub_data[0])

conditions.append(''.join(sub_data[1:3]))

temp.append(''.join(sub_data[3:6]))

# 數據保存

_data = pandas.DataFrame()

_data['日期'] = dates

_data['天氣情況'] = conditions

_data['氣溫'] = temp

return _data

# print(_data)

# _data.to_csv('anqing.csv',index=False,encoding='gbk')

# 獲取數據并保存csv格式,進行下面的數據分析

# 定義成函數形式進行封裝

data_month_3 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202003.html')

data_month_4 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202004.html')

data_month_5 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202005.html')

data = pandas.concat([data_month_3,data_month_4,data_month_5]).reset_index(drop=True)

data.to_csv('anqing.csv',index=False,encoding='gbk')

數據可視化

from matplotlib import pyplot as plt

# 畫圖

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

datalsit = pandas.read_csv('G:/Python_Web/weather/anqing.csv',encoding='gbk')

# 數據處理

datalsit['最高氣溫'] = datalsit['氣溫'].str.split('/',expand=True)[0]

datalsit['最低氣溫'] = datalsit['氣溫'].str.split('/',expand=True)[1]

datalsit['最高氣溫'] = datalsit['最高氣溫'].map(lambda x:int(x.replace('℃','')))

datalsit['最低氣溫'] = datalsit['最低氣溫'].map(lambda x:int(x.replace('℃','')))

dates = datalsit['日期']

highs = datalsit['最高氣溫']

lows = datalsit['最低氣溫']

# 畫圖

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

plt.plot(dates,highs,c='red',alpha=0.5)

plt.plot(dates,lows,c='blue',alpha=0.5)

plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.2)

# 圖表格式

# 設置圖標的圖形格式

plt.title('2020安慶市3-5月天氣情況',fontsize=24)

plt.xlabel('',fontsize=6)

fig.autofmt_xdate()

plt.ylabel('氣溫',fontsize=12)

plt.tick_params(axis='both',which='major',labelsize=10)

# 修改刻度

plt.xticks(dates[::20])

# 顯示

plt.show()

效果

完整代碼

#-*- codeing = utf-8 -*-

#@Time : 2020/6/2 20:26

#@Author : dele

#@File : weather.py

#@Software: PyCharm

import requests

from bs4 import BeautifulSoup

import io

import sys

import pandas

from matplotlib import pyplot as plt

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

def get_data(weather_url):

rseponse = requests.get(weather_url)

html = rseponse.content.decode('gbk')

soup = BeautifulSoup(html,'html.parser')

tr_lsit = soup.find_all('tr')

print(tr_lsit)

dates,conditions,temp = [],[],[]

for data in tr_lsit[1:]:

sub_data = data.text.split()

dates.append(sub_data[0])

conditions.append(''.join(sub_data[1:3]))

temp.append(''.join(sub_data[3:6]))

# 數據保存

_data = pandas.DataFrame()

_data['日期'] = dates

_data['天氣情況'] = conditions

_data['氣溫'] = temp

return _data

# print(_data)

# _data.to_csv('anqing.csv',index=False,encoding='gbk')

# data_month_3 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202003.html')

# data_month_4 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202004.html')

# data_month_5 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202005.html')

#

# data = pandas.concat([data_month_3,data_month_4,data_month_5]).reset_index(drop=True)

# data.to_csv('anqing.csv',index=False,encoding='gbk')

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

datalsit = pandas.read_csv('G:/Python_Web/weather/anqing.csv',encoding='gbk')

# 數據處理

datalsit['最高氣溫'] = datalsit['氣溫'].str.split('/',expand=True)[0]

datalsit['最低氣溫'] = datalsit['氣溫'].str.split('/',expand=True)[1]

datalsit['最高氣溫'] = datalsit['最高氣溫'].map(lambda x:int(x.replace('℃','')))

datalsit['最低氣溫'] = datalsit['最低氣溫'].map(lambda x:int(x.replace('℃','')))

dates = datalsit['日期']

highs = datalsit['最高氣溫']

lows = datalsit['最低氣溫']

# 畫圖

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

plt.plot(dates,highs,c='red',alpha=0.5)

plt.plot(dates,lows,c='blue',alpha=0.5)

plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.2)

# 圖表格式

# 設置圖標的圖形格式

plt.title('2020安慶市3-5月天氣情況',fontsize=24)

plt.xlabel('',fontsize=6)

fig.autofmt_xdate()

plt.ylabel('氣溫',fontsize=12)

plt.tick_params(axis='both',which='major',labelsize=10)

# 修改刻度

plt.xticks(dates[::20])

# 顯示

plt.show()

博客地址https://www.delehub.top/

知乎https://www.zhihu.com/people/bi-shi-san-2-81

總結

以上是生活随笔為你收集整理的python画图横轴刻度间隔设置为3个月_Python 天气情况数据分析及可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。