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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

Python 天氣情況數(shù)據(jù)分析及可視化

環(huán)境配置

Pycharm開(kāi)發(fā)環(huán)境

python 版本 python3.7

Anconda 集成開(kāi)發(fā)環(huán)境

第三方庫(kù)導(dǎo)入

## pip install 模塊 清華大學(xué)鏡像源

import requests

from bs4 import BeautifulSoup

import io

import sys

import pandas

from matplotlib import pyplot as plt

步驟

1.爬蟲(chóng)requests 獲取數(shù)據(jù)

2.pandas 處理數(shù)據(jù)

3.matplotlib 繪制圖形

4.其他 保存數(shù)據(jù)進(jìn)入csv格式,簡(jiǎn)單處理,例如雷達(dá)圖

小案例

雷達(dá)圖

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

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

#@Author : dele

#@File : demo.py

#@Software: PyCharm

# 雷達(dá)圖

import pygal

# pip install pygal 安裝模塊

rader_chart = pygal.Radar()

rader_chart.title = '成績(jī)分析'

rader_chart.x_labels = ["數(shù)學(xué)","英語(yǔ)","文綜","理綜","體育"]

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')

效果

天氣案例

爬取天氣網(wǎng)站地址http://www.tianqihoubao.com/lishi/

然后一直選擇找到你需要的數(shù)據(jù)地址

例如:如圖

進(jìn)行網(wǎng)頁(yè)分析 F12檢查網(wǎng)頁(yè)分析源代碼

Python 爬蟲(chóng)代碼分析

Pandas matplotlib 模塊

Pandas

pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。 ##### 基本功能

1. 數(shù)據(jù)文件讀取/文本數(shù)據(jù)讀取

2. 索引、選取和數(shù)據(jù)過(guò)濾

3. 算法運(yùn)算和數(shù)據(jù)對(duì)齊

4. 函數(shù)的應(yīng)用和映射

5. 重置索引

6. 數(shù)學(xué)統(tǒng)計(jì)方法

matplotlib

Matplotlib 是一個(gè) Python 的 2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形 。 通過(guò) Matplotlib,開(kāi)發(fā)者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯(cuò)誤圖,散點(diǎn)圖等。

Matplotlib基礎(chǔ)知識(shí)

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

x軸和y軸

水平和垂直的軸線

x軸和y軸刻度

刻度標(biāo)示坐標(biāo)軸的分隔,包括最小刻度和最大刻度

x軸和y軸刻度標(biāo)簽

表示特定坐標(biāo)軸的值

繪圖區(qū)域

實(shí)際繪圖的區(qū)域

2.hold屬性

hold屬性默認(rèn)為T(mén)rue,允許在一幅圖中繪制多個(gè)曲線;將hold屬性修改為False,每一個(gè)plot都會(huì)覆蓋前面的plot。

但是不推薦去動(dòng)hold這個(gè)屬性,這種做法(會(huì)有警告)。因此使用默認(rèn)設(shè)置即可。

3.網(wǎng)格線

grid方法

使用grid方法為圖添加網(wǎng)格線

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

.lw代表linewidth,線的粗細(xì)

.alpha表示線的明暗程度

4.axis方法

如果axis方法沒(méi)有任何參數(shù),則返回當(dāng)前坐標(biāo)軸的上下限

5.xlim方法和ylim方法

除了plt.axis方法,還可以通過(guò)xlim,ylim方法設(shè)置坐標(biāo)軸范圍

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]))

# 數(shù)據(jù)保存

_data = pandas.DataFrame()

_data['日期'] = dates

_data['天氣情況'] = conditions

_data['氣溫'] = temp

return _data

# print(_data)

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

# 獲取數(shù)據(jù)并保存csv格式,進(jìn)行下面的數(shù)據(jù)分析

# 定義成函數(shù)形式進(jìn)行封裝

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')

數(shù)據(jù)可視化

from matplotlib import pyplot as plt

# 畫(huà)圖

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

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

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

# 數(shù)據(jù)處理

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['最低氣溫']

# 畫(huà)圖

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)

# 圖表格式

# 設(shè)置圖標(biāo)的圖形格式

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]))

# 數(shù)據(jù)保存

_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')

# 數(shù)據(jù)處理

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['最低氣溫']

# 畫(huà)圖

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)

# 圖表格式

# 設(shè)置圖標(biāo)的圖形格式

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。