Attribuer des couleurs de ligne dans les pandas
Je suis en train de tracer certaines données dans les pandas et intégré de la fonction plot idéalement parcelles d'une ligne par colonne. Ce que je veux faire, c'est attribuer manuellement chaque ligne d'une couleur basée sur une classification que je fais.
Les ouvrages suivants:
df = pd.DataFrame({'1': [1, 2, 3, 4], '2': [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=['1','2'])
df.plot(color = s)
Mais quand mes indices sont des entiers, il ne fonctionne plus et le jette comme KeyError:
df = pd.DataFrame({1: [1, 2, 3, 4], 2: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,2])
df.plot(color = s)
La façon dont je le comprends, c'est que quand un index entier est utilisé de toute façon il doit commencer à partir de 0. C'est mon sentiment depuis les travaux suivants: la
df = pd.DataFrame({0: [1, 2, 3, 4], 1: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,0])
df.plot(color = s)
Ma question est:
- Ce qui se passe ici?
- En supposant que j'ai un index entier qui ne démarre pas à partir de 0 ou n'est pas formé d'une succession de numéros, comment puis-je faire ce travail sans avoir à convertir l'indice de chaîne ou de revisiter à partir de 0?
EDIT:
J'ai réalisé que, même dans le premier cas, le code ne fait pas ce que j'ai prévu de faire.
Il semble que les pandas correspond à l'indice de DataFrame et seulement si les deux sont des entiers indices en partant de 0. Si ce n'est pas le cas, un KeyError est jeté ou si l'index est un str l'ordre des éléments est utilisé.
Est-ce correct? Et est-il un moyen pour correspondre à la Série et DataFrame indices? Ou dois-je m'assurer de passer d'une liste de couleurs dans le bon ordre?
OriginalL'auteur GebitsGerbils | 2015-09-11
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe ici?
L'argument mot-clé couleur est héritée de matplotlib.pyplot.plot(). Les détails dans la documentation de ne pas préciser que vous pouvez mettre dans une liste de couleurs lors de la représentation. Étant donné que la couleur est un argument mot-clé à partir de matplotlib, je vous recommande de ne pas utiliser une Pandas Série pour contenir les valeurs de couleur.
Comment puis-je faire ce travail?
Utiliser une liste au lieu d'une Série. Si vous étiez à l'aide d'une Série avec un indice censé correspondre les colonnes de votre DataFrame de couleurs spécifiques, vous aurez besoin de trier la première Série. Si les colonnes ne sont pas dans l'ordre, vous devrez trier les colonnes ainsi.
Ouais, malheureusement, les Pandas est juste un wrapper de matplotlib. matplotlib permet à l'utilisateur de presque rien, mais il peut être vraiment salissant.
Ligne de code dans l'option 2, manque une fermeture
]
.OriginalL'auteur thecircus
Essayer:
cela va affecter les couleurs indépendamment de l'ampleur de l'index.
EDIT:
J'ai essayé avec trois colonnes:
et de tri de la Série, il fonctionne.
Le tri de la Série n'est utile que si le DataFrame de colonnes sont dans l'ordre.
OriginalL'auteur Fabio Lamanna