亚洲精品视频一区二区,一级毛片在线观看视频,久久国产a,狠狠狠色丁香婷婷综合久久五月,天天做天天欢摸夜夜摸狠狠摸

當前位置: > 投稿>正文

unstack中文翻譯,unstack是什么意思,unstack發(fā)音、用法及例句

2025-07-01 投稿

unstack中文翻譯,unstack是什么意思,unstack發(fā)音、用法及例句

1、unstack

unstack發(fā)音

英:  美:

unstack中文意思翻譯

常見(jiàn)釋義:

退棧,出棧

unstack相似詞語(yǔ)短語(yǔ)

1、couples counseling───夫妻咨詢(xún)

2、unscriptural prayers───無(wú)劇本的祈禱

3、buttering buns───奶油面包

4、pronouns worksheets───代詞工作表

5、unsafelywelcome go home───不安全歡迎回家

6、unsound lyrics───不健全的歌詞

7、dative pronouns───與格代詞

8、unskilled jobs that pay well───薪水高的非技術(shù)性工作

9、unsatisfying gif───不滿(mǎn)意的gif

10、gunshot wounds───火器傷;槍傷

2、如何高效地使用Matplotlib?

引言

對新手來(lái)說(shuō) Python 可視化實(shí)在有些令人挫敗。有很多不同的選項,如何選擇正確的選項是一個(gè)挑戰。例如,兩年前這篇文章《Overview of Python Visualization Tools》(http://pbpython.com/visualization-tools-1.html)仍然吸引了大量讀者。在那篇文章中,我否定了 Matplotlib。但是,在使用過(guò) pandas、scikit-learn、seaborn 和其他 Python 數據科學(xué)棧之后,我覺(jué)得之前否認 Matplotlib 的行為有點(diǎn)不成熟。坦白講,當時(shí)我不是很了解 Matplotlib,也不懂如何在我的工作流中高效使用 Matplotlib。

現在我學(xué)習了一些工具,了解了如何用 Matplotlib 使用這些工具,Matplotlib 逐漸變成了必需工具。本文將展示如何使用 Matplotlib。我堅定地認為 Matplotlib 是 Python 數據科學(xué)棧必不可少的一部分,希望這篇文章可以幫助大家了解如何使用 Matplotlib 進(jìn)行 Python 可視化。

為什么大家都在否定 Matplotlib?

我認為,Matplotlib 對于新手來(lái)說(shuō)比較難存在幾個(gè)原因。首先,Matplotlib 有兩個(gè)界面。第一個(gè)界面基于 MATLAB,使用基于狀態(tài)的接口。第二個(gè)界面是面向對象的接口。本文就不展開(kāi)介紹 Matplotlib 有兩個(gè)界面的原因,但了解這兩種方法在使用 Matplotlib 繪圖時(shí)會(huì )很重要。兩個(gè)界面會(huì )引起混淆的原因是堆棧溢出和通過(guò)谷歌搜索獲取的大量信息,新用戶(hù)將發(fā)現問(wèn)題的多個(gè)解決方案,但是這些問(wèn)題看起來(lái)類(lèi)似卻不完全相同。從我的個(gè)人經(jīng)驗來(lái)講,從以前的代碼中,我可以看出有一些 Matplotlib 代碼的混雜,我對此感覺(jué)很疑惑(盡管寫(xiě)它們的人是我……):-)

關(guān)鍵點(diǎn)

Matplotlib 新手應該學(xué)習和使用面向對象的接口。

使用 Matplotlib 的另一個(gè)歷史性挑戰是一些默認的樣式缺乏吸引力。在 R 使用 ggplot 就可以生成相當不錯的圖的世界中,Matplotlib 相對來(lái)說(shuō)有點(diǎn)丑。好消息是 Matplotlib 2.0 中的樣式好看了很多,你可以用最小的努力生成可視化。

第三個(gè)挑戰是你不確定什么時(shí)候該使用 Matplotlib,什么時(shí)候該使用基于 Matplotlib 構建的工具,如 pandas 或 seaborn。大部分時(shí)候做一件事都有多種選擇,但是對于新手來(lái)說(shuō)選擇正確的道路有些困難。這種混淆加上兩種不同 API 的混淆簡(jiǎn)直就是挫敗本敗了……

為什么使用 Matplotlib?

盡管 Matplotlib 有這么多問(wèn)題,我還是喜歡用它,因為它很強大。這個(gè)庫允許你創(chuàng )建幾乎所有可視化。此外,圍繞 Matplotlib 有一個(gè)豐富的 Python 工具生態(tài)環(huán)境,很多更高級的可視化工具使用 Matplotlib 作為基礎庫。如果你想在 Python 數據科學(xué)棧中進(jìn)行任何操作,你需要對如何使用 Matplotlib 有一些基礎了解。這就是本文其余部分的重點(diǎn)——提供一種高效使用 Matplotlib 的基礎方法。

前提

推薦以下步驟學(xué)習如何使用 Matplotlib:

1. 學(xué)習 Matplotlib 的基本術(shù)語(yǔ),具體來(lái)說(shuō)就是什么是 Figure 和 Axes。

2. 一直使用面向對象的界面,養成習慣。

3. 用基礎的 pandas 繪圖開(kāi)始可視化。

4. 使用 seaborn 進(jìn)行稍微復雜的數據可視化。

5. 使用 Matplotlib 自定義 pandas 或 seaborn 可視化。

下圖非常重要,有助于理解圖的不同術(shù)語(yǔ)。

大部分術(shù)語(yǔ)很直接易懂,需要牢記的是 Figure 是可能包含一或多個(gè) axes 的最終圖像。Axes 代表單個(gè)圖。一旦你理解這些是什么以及如何通過(guò)面向對象的 API 評估它們,其余步驟就很簡(jiǎn)單了。

了解這個(gè)知識還有一個(gè)好處,就是當你在網(wǎng)絡(luò )上看東西的時(shí)候有一個(gè)出發(fā)點(diǎn)。如果你花時(shí)間了解了這個(gè)點(diǎn),那么其他的 Matplotlib API 才有意義。此外,很多高級 Python 包,如 seaborn 和 ggplot 依賴(lài)于 Matplotlib 構建,因此理解了基礎,學(xué)習更強大的框架才更加容易。

最后,我不是說(shuō)你應該逃避其他優(yōu)秀選項,如 ggplot(又名 ggpy)、bokeh、plotly 或 altair。我只是認為你需要對 matplotlib + pandas + seaborn 有一個(gè)基礎的了解。了解基礎可視化棧之后,你就可以探索其他優(yōu)秀工具,根據需求做出合適的選擇。

開(kāi)始

下面主要介紹如何在 pandas 中創(chuàng )建基礎的可視化以及使用 Matplotlib 定制最常用的項。了解基礎流程有助于更直觀(guān)地進(jìn)行自定義。

我主要關(guān)注最常見(jiàn)的繪圖任務(wù),如標注軸、調整圖形界限(limit)、更新圖標題、保存圖像和調整圖例。

開(kāi)始,我打算設置輸入,讀取一些數據:

import pandas as pd

import matplotlib.pyplot as plt

from matplotlib.ticker import FuncFormatter

df = pd.read_excel("https://github.com/chris1610/pbpython/blob/master/data/sample-salesv3.xlsx?raw=true")

df.head()

數據包括 2014 年的銷(xiāo)售交易額。為簡(jiǎn)短起見(jiàn),我將總結這些數據,列出前十名客戶(hù)的采購次數和交易額。繪圖時(shí)我將對各列進(jìn)行重命名。

top_10 = (df.groupby('name')['ext price', 'quantity'].agg({'ext price': 'sum', 'quantity': 'count'})

.sort_values(by='ext price', ascending=False))[:10].reset_index()

top_10.rename(columns={'name': 'Name', 'ext price': 'Sales', 'quantity': 'Purchases'}, inplace=True)

下圖是數據。

現在數據在簡(jiǎn)單的表格形式呈現,我們再來(lái)看一下如何將數據繪制成條形圖。如前所述,Matplotlib 具備多種不同風(fēng)格,可用于渲染圖表。你可以使用 plt.style.available 查看你的系統可用的風(fēng)格。

plt.style.available

['seaborn-dark',

'seaborn-dark-palette',

'fivethirtyeight',

'seaborn-whitegrid',

'seaborn-darkgrid',

'seaborn',

'bmh',

'classic',

'seaborn-colorblind',

'seaborn-muted',

'seaborn-white',

'seaborn-talk',

'grayscale',

'dark_background',

'seaborn-deep',

'seaborn-bright',

'ggplot',

'seaborn-paper',

'seaborn-notebook',

'seaborn-poster',

'seaborn-ticks',

'seaborn-pastel']

使用如下簡(jiǎn)單風(fēng)格:

plt.style.use('ggplot')

我鼓勵大家使用不同的風(fēng)格,找到自己喜歡的。

現在我們有了好看的風(fēng)格,第一步就是使用標準 pandas 繪圖函數繪制數據:

top_10.plot(kind='barh', y="Sales", x="Name")

推薦使用 pandas 繪圖的原因在于它是一種快速便捷地建立可視化原型的方式。

自定義圖表

如果你對該圖表的重要部分都很滿(mǎn)意,那么下一步就是對它執行自定義。一些自定義(如添加標題和標簽)可以使用 pandas plot 函數輕松搞定。但是,你可能會(huì )發(fā)現自己需要在某個(gè)時(shí)刻跳出來(lái)。這就是我推薦你養成以下習慣的原因:

fig, ax = plt.subplots()

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

生成的圖表和原始圖表基本一樣,不過(guò)我們向 plt.subplots() 添加了一個(gè)額外的調用,并將 ax 傳輸至繪圖函數。為什么要這么做呢?還記得我說(shuō)在 Matplotlib 中獲取軸和圖像非常關(guān)鍵嗎?這里所做的就是為了達到該目的。通過(guò) ax 或 fig 對象可以執行任何自定義。

我們利用 pandas 實(shí)現快速繪圖,現在利用 Matplotlib 獲取所有功能。通過(guò)使用命名慣例,調整別人的解決方案適應自己的需求變得更加直接簡(jiǎn)單了。

假設我們想調整 x 極限,改變一些軸標簽?,F在我們在 ax 變量中有多個(gè)軸,可以進(jìn)行一些操作:

fig, ax = plt.subplots()

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

ax.set_xlim([-10000, 140000])

ax.set_xlabel('Total Revenue')

ax.set_ylabel('Customer');

這是另一種改變標題和標簽的簡(jiǎn)單方式:

fig, ax = plt.subplots()

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

ax.set_xlim([-10000, 140000])

ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer')

為了進(jìn)一步展示該方法,我們還可以調整圖像大小。使用 plt.subplots() 函數可以定義 figsize,以英寸為單位。我們還可以使用 ax.legend().set_visible(False) 移除圖例。

fig, ax = plt.subplots(figsize=(5, 6))

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

ax.set_xlim([-10000, 140000])

ax.set(title='2014 Revenue', xlabel='Total Revenue')

ax.legend().set_visible(False)

要想修改這個(gè)圖像,你可能需要執行很多操作。圖中最礙眼的可能是總收益額的格式。Matplotlib 可以使用 FuncFormatter 解決這一問(wèn)題。該函數用途多樣,允許用戶(hù)定義的函數應用到值,并返回格式美觀(guān)的字符串。

以下是貨幣格式化函數,用于處理數十萬(wàn)美元區間的數值:

def currency(x, pos):

'The two args are the value and tick position'

if x >= 1000000:

return '${:1.1f}M'.format(x*1e-6)

return '${:1.0f}K'.format(x*1e-3)

現在我們有了格式化程序函數,就需要定義它,并將其應用到 x 軸。完整代碼如下:

fig, ax = plt.subplots()

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

ax.set_xlim([-10000, 140000])

ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer')

formatter = FuncFormatter(currency)

ax.xaxis.set_major_formatter(formatter)

ax.legend().set_visible(False)

這張圖美觀(guān)多了,非常好地展示了自定義問(wèn)題解決方案的靈活性。最后要說(shuō)的自定義特征是向圖表添加注釋。你可以使用 ax.axvline() 畫(huà)垂直線(xiàn),使用 ax.text() 添加自定義文本。就以上示例,我們可以畫(huà)一條表示平均值的線(xiàn),包括代表 3 個(gè)新客戶(hù)的標簽。以下是完整代碼:

# Create the figure and the axes

fig, ax = plt.subplots()

# Plot the data and get the averaged

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)

avg = top_10['Sales'].mean()

# Set limits and labels

ax.set_xlim([-10000, 140000])

ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer')

# Add a line for the average

ax.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1)

# Annotate the new customers

for cust in [3, 5, 8]:

ax.text(115000, cust, "New Customer")

# Format the currency

formatter = FuncFormatter(currency)

ax.xaxis.set_major_formatter(formatter)

# Hide the legend

ax.legend().set_visible(False)

這可能不是最壯觀(guān)的圖,但它確實(shí)展示了使用該方法的力量。

圖表

目前,我們所做的所有改變都是針對單個(gè)圖表。我們還能夠在圖像上添加多個(gè)表,使用不同的選項保存整個(gè)圖像。

如果我們確定要在同一個(gè)圖像上放置兩個(gè)表,那么我們應該對如何做有一個(gè)基礎了解。首先,創(chuàng )建圖像,然后創(chuàng )建軸,再將它們繪制成圖表。使用 plt.subplots() 可以完成該操作:

fig, (ax0, ax1) = plt.subplots(nrows=1, ncols=2, sharey=True, figsize=(7, 4))

在這個(gè)例子中,我使用 nrows 和 ncols 指定大小,這對新用戶(hù)來(lái)說(shuō)比較清晰易懂。

在示例代碼中,你會(huì )經(jīng)??吹阶兞咳?1、2。我認為使用命名參數便于稍后查看代碼時(shí)理解代碼。

我還使用 sharey=True 以使 y 軸共享相同的標簽。

該示例很靈活,因為不同的軸可以解壓成 ax0 和 ax1?,F在我們有了這些軸,就可以像上述示例中那樣繪圖,然后把一個(gè)圖放在 ax0 上,另一個(gè)圖放在 ax1。

# Get the figure and the axes

fig, (ax0, ax1) = plt.subplots(nrows=1,ncols=2, sharey=True, figsize=(7, 4))

top_10.plot(kind='barh', y="Sales", x="Name", ax=ax0)

ax0.set_xlim([-10000, 140000])

ax0.set(title='Revenue', xlabel='Total Revenue', ylabel='Customers')

# Plot the average as a vertical line

avg = top_10['Sales'].mean()

ax0.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1)

# Repeat for the unit plot

top_10.plot(kind='barh', y="Purchases", x="Name", ax=ax1)

avg = top_10['Purchases'].mean()

ax1.set(title='Units', xlabel='Total Units', ylabel='')

ax1.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1)

# Title the figure

fig.suptitle('2014 Sales Analysis', fontsize=14, fontweight='bold');

# Hide the legends

ax1.legend().set_visible(False)

ax0.legend().set_visible(False)

現在,我已經(jīng)在 jupyter notebook 中用 %matplotlib inline 展示了很多圖像。但是,在很多情況下你需要以特定格式保存圖像,將其和其他呈現方式整合在一起。

Matplotlib 支持多種不同文件保存格式。你可以使用 fig.canvas.get_supported_filetypes() 查看系統支持的文件格式:

fig.canvas.get_supported_filetypes()

{'eps': 'Encapsulated Postscript',

'jpeg': 'Joint Photographic Experts Group',

'jpg': 'Joint Photographic Experts Group',

'pdf': 'Portable Document Format',

'pgf': 'PGF code for LaTeX',

'png': 'Portable Network Graphics',

'ps': 'Postscript',

'raw': 'Raw RGBA bitmap',

'rgba': 'Raw RGBA bitmap',

'svg': 'Scalable Vector Graphics',

'svgz': 'Scalable Vector Graphics',

'tif': 'Tagged Image File Format',

'tiff': 'Tagged Image File Format'}

我們有 fig 對象,因此我們可以將圖像保存成多種格式:

fig.savefig('sales.png', transparent=False, dpi=80, bbox_inches="tight")

該版本將圖表保存為不透明背景的 png 文件。我還指定 dpi 和 bbox_inches="tight" 以最小化多余空白。

結論

希望該方法可以幫助大家理解如何更有效地使用 Matplotlib 進(jìn)行日常數據分析。

版權聲明: 本站僅提供信息存儲空間服務(wù),旨在傳遞更多信息,不擁有所有權,不承擔相關(guān)法律責任,不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責。如因作品內容、版權和其它問(wèn)題需要同本網(wǎng)聯(lián)系的,請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。

亚洲精品视频一区二区,一级毛片在线观看视频,久久国产a,狠狠狠色丁香婷婷综合久久五月,天天做天天欢摸夜夜摸狠狠摸