Matplotlib introduit dans la méthode d'élimination brouillée, mais pour être honnête, je n'ai pas du tout envie de l'utiliser.
Je me demande s'il y a plus de 30 arguments qui peuvent être spécifiés uniquement avec la fonction plot. http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
Property Description
agg_filter unknown
alpha float (0.0 transparent through 1.0 opaque)
animated [True | False]
antialiased or aa [True | False]
axes an Axes instance
clip_box a matplotlib.transforms.Bbox instance
clip_on [True | False]
...
Même ainsi, le résultat est un tel graphe ~~ merdique ~~.
Il semble que si vous faites de votre mieux, vous pouvez dessiner de beaux graphiques, mais vous n'avez pas beaucoup de motivation pour apprendre.
C'est là que seaborn entre en jeu.
Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing attractive statistical graphics.
En d'autres termes, il fournit une interface de niveau supérieur (abstraite) en tant que wrapper pour matplotlib.
C'est comme un package de requêtes pour urllib.
L'interface est également importante, mais si vous pouvez dessiner une telle carte thermique avec environ 10 lignes de code, vous serez motivé pour apprendre.
Cependant, je n'ai pas les données qui semblent être assez grandes pour dessiner soudainement une carte thermique, donc je vais essayer de dessiner un graphique de base en utilisant les données de consommation d'énergie de mes appareils électroménagers.
$réfrigérateur pour chat.csv
No.,DateTime,Watt,kWh
1,2015/03/02-23:25:44,58.9,0
2,2015/03/02-23:35:44,50.6,0.01
3,2015/03/02-23:45:44,50.3,0.02
4,2015/03/02-23:55:44,61.7,0.02
5,2015/03/03-00:05:44,72.4,0.03
6,2015/03/03-00:15:44,51.3,0.04
7,2015/03/03-00:25:44,47.7,0.05
8,2015/03/03-00:35:44,47.6,0.06
9,2015/03/03-00:45:44,20.2,0.06
10,2015/03/03-00:55:44,40.5,0.06
Il s'agit du journal acquis par Sanwa Supply TAP-TST10. L'inconvénient est que vous ne pouvez pas vous connecter en temps réel, mais ... eh bien, c'est bon marché.
Si vous le convertissez en DataFrame avec des pandas, ce sera comme ça.
import pandas as pd
data = pd.read_csv("réfrigérateur.csv")
print(data)
No. DateTime Watt kWh
0 1 2015/03/02-23:25:44 58.9 0.00
1 2 2015/03/02-23:35:44 50.6 0.01
2 3 2015/03/02-23:45:44 50.3 0.02
3 4 2015/03/02-23:55:44 61.7 0.02
4 5 2015/03/03-00:05:44 72.4 0.03
5 6 2015/03/03-00:15:44 51.3 0.04
6 7 2015/03/03-00:25:44 47.7 0.05
7 8 2015/03/03-00:35:44 47.6 0.06
8 9 2015/03/03-00:45:44 20.2 0.06
9 10 2015/03/03-00:55:44 40.5 0.06
10 11 2015/03/03-01:05:44 59.4 0.07
...
[1441 rows x 4 columns]
print(data.DateTime)
0 2015/03/02-23:25:44
1 2015/03/02-23:35:44
2 2015/03/02-23:45:44
3 2015/03/02-23:55:44
4 2015/03/03-00:05:44
5 2015/03/03-00:15:44
6 2015/03/03-00:25:44
7 2015/03/03-00:35:44
8 2015/03/03-00:45:44
9 2015/03/03-00:55:44
10 2015/03/03-01:05:44
...
Name: DateTime, dtype: object
print(data['Watt'])
0 58.9
1 50.6
2 50.3
3 61.7
4 72.4
5 51.3
6 47.7
7 47.6
8 20.2
9 40.5
10 59.4
Name: Watt, dtype: float64
Le code pour visualiser cela avec seaborn est le suivant.
import seaborn as sns
import pandas as pd
data = pd.read_csv("réfrigérateur.csv")
#Utilisez un tracé de points relativement simple
ax = sns.pointplot(
x='DateTime', #DateTime sur l'axe des x
y='Watt', #Watt sur l'axe y
data=data, #Spécifiez DataFrame
markers=['']) #Masquer les marqueurs pour tracer les données
#Comme il y a trop de données dans la direction de l'axe x, les étiquettes sont éclaircies tous les jours (les données ne sont pas éclaircies)
xlabels = [datetime.split('-')[0]
if list(data.DateTime).index(datetime) % 144 is 0 else ''
for datetime in data.DateTime]
#Définir l'étiquette de l'axe X et faire pivoter l'affichage de l'étiquette de 90 degrés
ax.set_xticklabels(xlabels, rotation='vertical')
#Exporter vers un fichier png
sns.plt.savefig('réfrigérateur.png')
Les données sont trop obstruées ...
Diluez un peu comme suit.
data = pd.read_csv("réfrigérateur.csv")[:360]
Cette fois, ça fait du bien.
La consommation électrique nominale du réfrigérateur est d'environ 110 W, donc lorsque vous voyez que la valeur de crête est de 114,0 W, c'est presque comme spécifié.
data.Watt.mean()
44.557499999999997
data.Watt.min()
2.2999999999999998
data.Watt.max()
114.0
Quelle est la consommation électrique?
import seaborn as sns
import pandas as pd
data = pd.read_csv("réfrigérateur.csv")
#Utilisez un tracé de points relativement simple
ax = sns.pointplot(
x='DateTime', #DateTime sur l'axe des x
y='kWh', #kWh (consommation d'énergie intégrée) sur l'axe y
data=data, #Spécifiez DataFrame
markers=['']) #Masquer les marqueurs pour tracer les données
#Comme il y a trop de données dans la direction de l'axe x, les étiquettes sont éclaircies tous les jours (les données ne sont pas éclaircies)
xlabels = [datetime.split('-')[0]
if list(data.DateTime).index(datetime) % 144 is 0 else ''
for datetime in data.DateTime]
#Définir l'étiquette de l'axe X et faire pivoter l'affichage de l'étiquette de 90 degrés
ax.set_xticklabels(xlabels, rotation='vertical')
#Exporter vers un fichier png
sns.plt.savefig('Réfrigérateur kWh.png')
Vous pouvez voir que la consommation électrique est d'environ 1 kWh / jour.
data.kWh.max() / 10.0
1.0589999999999999
Référence API seaborn et [galerie](http://stanford.edu/~mwaskom/software/seaborn/examples/index. En regardant html), la tension est élevée.
Tout d'abord, je dois être capable de maîtriser les outils.
Recommended Posts