小编Ala*_*rik的帖子

将 matplotlib 轮廓限制/屏蔽到数据区域

我有一个由 x、y 和 z 列给出的非均匀间隔数据点的 Pandas DataFrame,其中 x 和 y 是变量对,z 是因变量。例如:

import matplotlib.pyplot as plt
from matploblib.mlab import griddata
import numpy as np
import pandas as pd

df = pd.DataFrame({'x':[0, 0, 1, 1, 3, 3, 3, 4, 4, 4], 
                   'y':[0, 1, 0, 1, 0.2, 0.7, 1.4, 0.2, 1.4, 2], 
                   'z':[50, 40, 40, 30, 30, 30, 20, 20, 20, 10]})

x = df['x']
y = df['y']
z = df['z']
Run Code Online (Sandbox Code Playgroud)

我想在 x 和 y 上绘制因变量 z 的等高线图。为此,我创建了一个新网格来使用 matplotlib.mlab 的 griddata 函数对数据进行插值。 …

python plot matplotlib

6
推荐指数
1
解决办法
3062
查看次数

Python:在 Tkinter GUI 中嵌入 pandas 绘图

我正在 Python 2.7 中使用 pandas DataFrames 编写一个应用程序。我需要将 DataFrame 的列绘制到 Tkinter 窗口。我知道我可以使用 DataFrame 或 Series 上的内置绘图方法(这只是 matplotlib 绘图函数的包装)来绘制 pandas DataFrames 列,如下所示:

import pandas as pd
df = pd.DataFrame({'one':[2,4,6,8], 'two':[3,5,7,9]})
df.plot('one')
Run Code Online (Sandbox Code Playgroud)

另外,我还弄清楚了如何使用 matplotlib 绘制到 Tkinter GUI 窗口:

import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import pandas as pd
import Tkinter as tk
import ttk

root = tk.Tk()
#-------------------------------------------------------------------------------
lf = ttk.Labelframe(root, text='Plot Area')
lf.grid(row=0, column=0, sticky='nwes', padx=3, pady=3)

f = Figure(figsize=(5,4), dpi=100) …
Run Code Online (Sandbox Code Playgroud)

python embed tkinter matplotlib pandas

5
推荐指数
1
解决办法
9879
查看次数

Python pandas绘制时间序列与差距

我试图用TimeStamp indizes绘制一个pandas DataFrame,它的indizes中有一个时间间隔.使用pandas.plot()会导致前一段的最后一个TimeStamp与下一段的第一个TimeStamp之间的线性插值.我不想要线性插值,也不想在两个日期段之间留空空间.有没有办法做到这一点?

假设我们有一个带有TimeStamp的DataFrame:

>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> df = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
>>> df = df.cumsum()
Run Code Online (Sandbox Code Playgroud)

现在让我们花两个时间块来绘制它:

>>> df = pd.concat([df['Jan 2000':'Aug 2000'], df['Jan 2001':'Aug 2001']])
>>> df.plot()
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

结果图具有连接包围间隙的TimeStamps的插值线.我无法弄清楚如何在这台机器上上传图片,但Google网上论坛的这些图片显示了我的问题(interpolated.jpg,no-interpolation.jpg和no gaps.jpg).我可以重新创建第一个,如上所示.第二个是通过用NaN替换所有间隙值来实现的(参见这个问题).如何省略时间间隔的第三个版本?

python plot time-series pandas

5
推荐指数
1
解决办法
3703
查看次数

pandas DataFrame 从不规则时间序列索引重新采样

我想每五秒重新采样一个 DataFrame,其中原始数据的时间戳是不规则的。抱歉,如果这看起来像一个重复的问题,但我在插入数据时间戳时遇到问题,这就是我在这个问题中包含我的 DataFrame 的原因。此答案的图表显示了我想要的结果,但我无法使用traces那里建议的包。我用pandas 0.19.0.

考虑飞机的以下爬升路径(如 pastebin 上的字典):

    Altitude        Time
1       0.00     0.00000
2    1000.00    16.45350
3    2000.00    33.19584
4    3000.00    50.25330
5    4000.00    67.64580
6    5000.00    85.38720
7    6000.00   103.56720
8    7000.00   122.29260
9    8000.00   141.61440
10   9000.00   161.59140
11   9999.67   182.27940
12  10000.30   182.33940
13  10000.30   199.76880
14  10000.30   199.82880
15  11000.00   221.67660
16  12000.00   244.36260
17  13000.00   267.93900
18  14000.00   292.46940
19  15000.00   318.01080
20  16000.00   344.36820 …
Run Code Online (Sandbox Code Playgroud)

python datetime time-series pandas

5
推荐指数
1
解决办法
4377
查看次数

使用 matplotlib 绘制类似 Python 极地时钟的图

我正在尝试按照此答案的风格,使用 Python 中的 matplotlib 以顺时针方式绘制数据。我在绘制数据时注意到奇怪的行为;数据点具有正确的 y 值,但不会出现在正确的 x 值(即时间)处。我首先认为我的数据是错误的,但是在使用以下工作示例重新创建我的问题后,我得出的结论是错误一定在其他地方。

import numpy as np
import matplotlib.pyplot as plt     

ax = plt.subplot(111, polar=True)
equals = np.linspace(0, 360, 24, endpoint=False) #np.arange(24)
ones = np.ones(24)
ax.scatter(equals, ones)       

# Set the circumference labels
ax.set_xticks(np.linspace(0, 2*np.pi, 24, endpoint=False))
ax.set_xticklabels(range(24))      

# Make the labels go clockwise
ax.set_theta_direction(-1)       

# Place 0 at the top
ax.set_theta_offset(np.pi/2.0)       

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果如下图: 在此输入图像描述

考虑到 的定义,我预计这些点的 x 值与小时数一致equals。它目前被定义为角度,但我也尝试将其定义为小时。为什么情况并非如此?如何使我的数据与相应的时间一致?

python plot matplotlib polar-coordinates

3
推荐指数
1
解决办法
3500
查看次数

Pyspark 添加字符串类型的空文字映射

这个问题类似,我想在我的 pyspark DataFrame 中添加一列,其中只包含一个空地图。但是,如果我使用该问题的建议答案,则地图的类型为<null,null>,与那里发布的答案不同。

from pyspark.sql.functions import create_map
spark.range(1).withColumn("test", create_map()).printSchema()

root
 |-- test: map(nullable = false)
 |    |-- key: null
 |    |-- value: null (valueContainsNull = false)
Run Code Online (Sandbox Code Playgroud)

我需要一张空<string,string>地图。我可以在 Scala 中这样做:

import org.apache.spark.sql.functions.typedLit
spark.range(1).withColumn("test", typedLit(Map[String, String]())).printSchema()

root
 |-- test: map(nullable = false)
 |    |-- key: string
 |    |-- value: string (valueContainsNull = true)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在pyspark中做到这一点?我在 Databricks Runtime 7.3 LTS 上使用 Spark 3.01 和底层 Scala 2.12。我需要<string,string>地图,因为否则我无法将数据框保存到镶木地板:

AnalysisException: Parquet data source does not support map<null,null> data …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

3
推荐指数
1
解决办法
2274
查看次数