python - 多输入多元数据可视化

标签 python pandas data-visualization multivalue multivariate-testing

我正在尝试通过从多个输入文件中读取多变量数据模型来可视化它们。我正在寻找一种简单的解决方案来可视化从多个输入 csv 文件读取的多个类别数据。没有。输入中的行数在单个文件中从 1 到 10000 不等。格式与所有具有 4 列的 csv 文件的输入相同。

输入 1

tweetcricscore 34  51 high

输入 2

tweetcricscore 23 46 low
tweetcricscore 24  12 low
tweetcricscore 456 46 low

输入 3

tweetcricscore 653  1 medium 
tweetcricscore 789 178 medium

输入 4

tweetcricscore 625  46 part
tweetcricscore 86  23 part
tweetcricscore 3  1 part
tweetcricscore 87 8 part
tweetcricscore 98 56 part

四个输入分别属于不同的类别,col[1]col[2] 是某种分类的成对结果。这里所有的输入都是同一个分类的输出。我想以更好的方式将它们可视化,以仅在一个图中显示所有类别。寻找相同的 python 或 pandas 解决方案。散点图或任何最佳绘图方法。

我已经在堆栈交换的数据分析部分发布了这个查询,但我运气不好,因此在这里尝试。 https://datascience.stackexchange.com/questions/11440/multi-model-data-set-visualization-python

可能类似于下图,其中每个类都有自己的标记和颜色,并且可以分类或以任何更好的方式一起显示对值。

代码:编辑 1: 我正在尝试使用上述输入文件绘制散点图。

import numpy as np
import matplotlib.pyplot as plt
from pylab import*
import math
from matplotlib.ticker import LogLocator
import pandas as pd

df1 = pd.read_csv('input_1.csv', header = None)

df1.columns = ['col1','col2','col3','col4']
plt.df1(kind='scatter', x='col2', y='col3', s=120, c='b', label='Highly')

plt.legend(loc='upper right')
plt.xlabel('Freq (x)')
plt.ylabel('Freq(y)')
#plt.gca().set_xscale("log")
#plt.gca().set_yscale("log")
plt.show()

错误:

Traceback (most recent call last):
  File "00_scatter_plot.py", line 12, in <module>
    plt.scatter(x='col2', y='col3', s=120, c='b', label='High')
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3087, in scatter
    linewidths=linewidths, verts=verts, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6337, in scatter
    self.add_collection(collection)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1481, in add_collection
    self.update_datalim(collection.get_datalim(self.transData))
  File "/usr/lib/pymodules/python2.7/matplotlib/collections.py", line 185, in get_datalim
    offsets = np.asanyarray(offsets, np.float_)
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 514, in asanyarray
    return array(a, dtype, copy=False, order=order, subok=True)
ValueError: could not convert string to float: col2

预期输出 Plotting- Pandas

Scatter plot

最佳答案

更新:

不同的颜色:

colors = dict(low='DarkBlue', high='red', part='yellow', medium='DarkGreen')

fig, ax = plt.subplots()

for grp, vals in df.groupby('col4'):
    color = colors[grp]
    vals[['col2','col3']].plot.scatter(x='col2', y='col3', ax=ax,
                                       s=120, label=grp, color=color)

PS 你必须注意你所有的组 (col4) - 在 colors 字典中定义

enter image description here

旧答案:

假设您已将您的文件连接/合并/加入到单个 DF 中,我们可以执行以下操作:

fig, ax = plt.subplots()
[vals[['col2','col3']].plot.scatter(x='col2', y='col3', ax=ax, label=grp)
 for grp, vals in df.groupby('col4')]

enter image description here

PS 作为作业 - 你可以玩颜色 ;)

关于python - 多输入多元数据可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147592/

相关文章:

python - 如何跳过 pdb 中函数的最后一行?

python - Django admin 中同一模型的多个 ModelAdmins/ View

python - RegEx Tokenizer : split text into words, 数字、标点符号和空格(不要删除任何内容)

python - python中数值数组的stepify/grid snap函数

python - 如何处理 Pandas 数据框中丢失的数据?

r - 可视化表或矩阵中数据帧的交集

python - 转换 Pandas 数据框中的日期/时间列

python - pandas boxplot 包含之前保存的绘图内容

python - 将过滤器变换应用于 Altair 图,同时保留所有图例类别

python - 仅在数据框中填充缺失值( Pandas )