下面的牛郎星变换在pandas中的等价物是什么?

iswrvxsc  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(116)

我一直在尝试用altair创建一个并行集合图,但是我不明白下面提到的代码是什么意思,特别是transform_window函数。我已经查阅了altair和vega的文档,但是仍然没有得到一个关于它的意思的线索?

import altair as alt
from vega_datasets import data

source = data.iris()

alt.Chart(source).transform_window(
    index='count()'
).transform_fold(
    ['petalLength', 'petalWidth', 'sepalLength', 'sepalWidth']
).mark_line().encode(
    x='key:N',
    y='value:Q',
    color='species:N',
    detail='index:N',
    opacity=alt.value(0.5)
).properties(width=500)

我是这么做的

df= source.copy()
cols= df.columns.tolist()
df= df.groupby(cols, as_index= False).size()
df= pd.melt(df, id_vars= ["species", "size"], value_vars= ["sepalLength", "sepalWidth", "petalLength", "petalWidth"])

df.reset_index(inplace= True)
df

更令人困惑的是,当使用计数聚合时,为什么index被设置为Nominal(因此本质上应该是定性的)。pandas的等价物是什么,因为我不太热衷于学习这些转换,并发现pandas是数据操作的更好替代品。
代码源-https://altair-viz.github.io/gallery/parallel_coordinates.html

atmip9wb

atmip9wb1#

下面是一种使用 pandasmatplotlib 复制图的方法,使用 seaborn 来获取数据集:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

iris = sns.load_dataset('iris')

# transpose the measurement columns to rows
iris_measures = iris.iloc[:, 0:4].T

# sort rows alphabetically by measurement name
iris_measures = iris_measures.reindex(sorted(iris_measures.index), axis=0)

# define colormap for the plot legend
colors = {'setosa': 'steelblue',
          'versicolor': 'darkorange',
          'virginica': 'indianred'}

# plot one line for each row
ax = iris_measures.plot.line(color=iris.species.map(colors), linewidth=0.7, legend=True)

# filter legend entries down to one per species
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[::50], iris.species[::50]);

相关问题