Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotting parallel coordinates in pandas/python

I am trying to use pandas in python to plot the following higher-dimensional data: https://i.sstatic.net/34nbR.jpg

Here is my code:

import pandas
from pandas.tools.plotting import parallel_coordinates

data = pandas.read_csv('ParaCoords.csv')
parallel_coordinates(data,'Name')

The code fails to plot the data, and the Traceback error ends with:

Keyerror: 'Name'

What is the second argument in parallel_coordinates supposed to say/do? How can I successfully plot the data?

like image 392
C. Stucki Avatar asked Jul 24 '26 16:07

C. Stucki


2 Answers

The second argument is supposed to be the column name that defines class. Think ['dog', 'dog', 'cat', 'bird', 'cat', 'dog'].

In the example online they use 'Name' as the second argument because that is a column defining names of iris's

Doc

Signature: parallel_coordinates(*args, **kwargs)
Docstring:
Parallel coordinates plotting.

Parameters
----------
frame: DataFrame
class_column: str
    Column name containing class names
cols: list, optional
    A list of column names to use
ax: matplotlib.axis, optional
    matplotlib axis object
color: list or tuple, optional
    Colors to use for the different classes
use_columns: bool, optional
    If true, columns will be used as xticks
xticks: list or tuple, optional
    A list of values to use for xticks
colormap: str or matplotlib colormap, default None
    Colormap to use for line colors.
axvlines: bool, optional
    If true, vertical lines will be added at each xtick
axvlines_kwds: keywords, optional
    Options to be passed to axvline method for vertical lines
kwds: keywords
    Options to pass to matplotlib plotting method
like image 173
piRSquared Avatar answered Jul 26 '26 07:07

piRSquared


The iris.data file that you download from UCI does not have headers. To make the pandas example work, you have to assign the headers explicitly as column names:

from pandas.tools.plotting import parallel_coordinates
# The iris.data file from UCI does not have headers,
# so we have to assign the column names explicitly.
data = pd.read_csv("data-iris-for-pandas/iris.data")
data.columns=["x1","x2","x3","x4","Name"]
plt.figure()
parallel_coordinates(data,"Name")

Pandas Parallel Coordinates Example

Basically, the pandas documentation is incomplete. Someone put the column names into the dataframe without letting us know.

like image 24
user5920660 Avatar answered Jul 26 '26 09:07

user5920660



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!