Les Pandas de Traçage à partir du Tableau croisé dynamique
Je suis en fait, d'essayer de reproduire le climat des diagrammes montrant la température moyenne et des précipitations au cours de l'année à divers endroits.
J'ai généré un tableau croisé dynamique à partir de mon csv de la façon suivante:
data = pd.read_csv("05_temp_rain_v2.csv")
pivot = data.pivot_table(["rain(mm)","temp(dC)"], ["loc","month"])
échantillon de données sous forme de texte:
loc,lat,long,year,month,rain(mm),temp(dC)
Adria_-_Bellombra,45.011129,12.034126,1994,1,45.6,4.6
Adria_-_Bellombra,45.011129,12.034126,1994,2,31.4,4
Adria_-_Bellombra,45.011129,12.034126,1994,3,1.6,10.7
Adria_-_Bellombra,45.011129,12.034126,1994,4,74.4,11.5
Adria_-_Bellombra,45.011129,12.034126,1994,5,26,17.2
Adria_-_Bellombra,45.011129,12.034126,1994,6,108.6,20.6
Tableau Croisé Dynamique:
Depuis que je suis le traitement des différentes endroits, je suis une itération sur eux:
locations=pivot.index.get_level_values(0).unique()
for location in locations:
split=pivot.xs(location)
rain=split["rain(mm)"]
temp=split["temp(dC)"]
plt.subplots()
temp.plot(kind="line",color="r",).legend()
rain.plot(kind="bar").legend()
Un exemple de la parcelle de sortie est indiqué ci-dessous:
Pourquoi mes valeurs de température étant tracée à partir de février (2)?
Je suppose que c'est parce que les valeurs de température sont présentés dans la deuxième colonne.
Quelle serait la bonne façon de gérer et tracer les différentes données (deux colonnes) à partir d'un tableau croisé dynamique?
certainement! les données de l'échantillon ajouté.
OriginalL'auteur cir | 2016-03-21
Vous devez vous connecter pour publier un commentaire.
C'est parce que
line
etbar
parcelles ne définissez pas laxlim
de la même façon. L'axe des x est interprété comme des données catégorielles dans le cas de la barre de l'intrigue, alors qu'il est interprété en continu les données de la ligne de la parcelle. Le résultat étant quexlim
etxticks
ne sont pas définies de manière identique dans les deux situations.Considérez ceci:
où la position des tiques est un tableau de float allant de 1 à 6.
et
où la position des tiques est un tableau de int allant de de 0 à 5.
Donc, le plus simple est de remplacer cette partie:
par:
range(6)
truc pour tout x de l'axe (tout type de données)? Je veux dire une solution générale... Peut-être sauver xticks ou tout simplement c'est la longueur?Merci, fixe
votre parcelle de terrain a toujours l'air mieux que le mien 😉 merci pour les précisions!
OriginalL'auteur jrjc
Grâce à jeanrjc réponse et ce fil je pense que je suis finalement assez satisfait!
J'obtiens le résultat suivant, qui est très proche de ce que j'ai l'intention:
OriginalL'auteur cir
Vous pourriez en boucle sur les résultats d'une
groupby
opération:groupby
objet directement, mais je ne suis pas sûr de savoir comment le faire fonctionner exactement:data.groupby('loc').plot()
.OriginalL'auteur IanS