[PYTHON] Extraire les lignes qui remplissent les conditions d'Excel contenant des données de date (% Y /% m /% d)

Aperçu

-Pd.to_datetime est pratique. -Lors de l'exécution de pd.read_csv, vous devez faire attention au code de caractère. ・ La mer née peut être bonne.

À propos des données à utiliser

fichier Excel ・ Y compris les données de date ・ Il y a plusieurs rangées ・ La première ligne contient des données inutiles ○○,○○,2016/8/11,○○,○○ Des données comme. Le nom d'élément de la date est supposé être "date limite". Pour écrire un peu plus sur les données,

..., objet (chaîne de caractères), ..., date limite (% Y /% m /% d), ...,

Charger des données (pandas)

Tout d'abord, je l'ai exporté d'Excel au format csv en vue de le lire à partir de pandas sous forme de fichier csv. Ensuite, lisez comme un DataFrame.

data = pd.read_csv('./Fichier.csv', encording='Shift-jis', skiprows=1)

Il a fallu un certain temps pour encoder = 'Shift-jis'. Avec Python3, j'avais l'image qu'aucune erreur ne se produirait même si je ne me souciais pas du code de caractère, mais ce n'était pas le cas.

Extraction de l'emplacement cible

Cette fois, extrayons la partie où se trouve la partie date dans le futur. Par conséquent, l'extraction des données de la partie date est comparée à la date du jour et conservée en tant que filtre.

myfilter = pd.to_datetime(data['Date limite']. format='%Y/%m/%d', error='coerce' > datetime.datetime.today()

Si vous souhaitez extraire la pièce qui a dépassé la date limite, vous pouvez vous permettre de la modifier.

myfilter = pd.to_datetime(data['Date limite']. format='%Y/%m/%d', error='coerce' < datetime.datetime.today()

Il m'a fallu un certain temps pour accéder à pd.to_datetime. Vous savez que les pandas ont une méthode très pratique pour manipuler les dates. http://sinhrks.hatenablog.com/entry/2014/11/09/183603 Je l'ai mentionné.

error = 'coerce' a également été pris un peu. Il y avait une ligne dans les données de date où la date n'a pas été entrée et le symbole a été entré, ce qui a provoqué l'erreur. Cette fois, j'ai décidé de définir l'erreur sur NaT. Il existe deux autres méthodes. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html Prière de se référer à.

Autres modèles (calcul du nombre de jours)

Si vous voulez savoir combien de jours se sont écoulés entre l'échéance définie et aujourd'hui, vous pouvez soustraire la date / heure. Par exemple

days = datetime.datetime.today() - pd.to_datetime(data['Date limite'], format=%Y/%m/%d, errors='coerce')

Si vous voulez tracer cela, vous ne pouvez pas le sortir tel quel (on dit qu'il ne s'agit pas de données numériques), donc par exemple

days = days / np.timedelta64(1, 'D')

Il est nécessaire de faire un type float en effectuant un calcul. Il m'a fallu du temps pour arriver ici.

Autres modèles de création de filtres (extraire des parties NaT)

Si vous définissez errors = 'coerce' lors de l'exécution de pd.to_datetime (), l'erreur sera NaT, mais si vous souhaitez extraire NaT, par exemple, si vous souhaitez extraire des données sans données de date ,

filter = pd.to_datetime(...).isnull()

est. NaT est isnull (). Cela a également pris un certain temps pour rechercher et trouver.

Création de données pour la sortie

Après cela, je viens de sortir en utilisant un filtre, mais je n'ai eu qu'à sortir des informations spécifiques (colonnes), donc

print(data[myfilter]['Nom d'une colonne particulière'])

C'était fabriqué. Après cela, si vous le modifiez de manière appropriée, vous pouvez le sortir sous forme de fichier, je vais donc extraire des données spécifiques (lignes) d'un gros fichier Excel et visualiser les jours jusqu'à la date limite.

Graphisme

Il semble bon de représenter graphiquement les données de DataFrame des pandas avec seaborn. Si vous souhaitez un graphique à barres avec le sujet sur l'axe vertical et l'axe horizontal sur le nombre de jours,

sns.barplot(x='Journées', y='matière',data=data)

Se sentir comme ça. Si vous spécifiez le nom de la colonne que vous souhaitez utiliser pour le graphique avec x et y, seaborn l'organisera bien.

Pour référence, https://stanford.edu/~mwaskom/software/seaborn/examples/horizontal_boxplot.html est.

Si vous souhaitez affiner la position du graphique de seaborn (matplotlib)

plt.subplot_adjust(left=*, right=*, top=*, bottom=*)Utiliser.


 Cela peut être ressenti en affichant réellement le graphique et en effectuant des ajustements précis, mais cela semble être la position de l'extrémité gauche et de l'extrémité droite du graphique lorsque l'extrémité la plus à droite de la zone visible du graphique est 1,0.
 Par conséquent, si vous le rendez plus grand que right = 1.0, le graphique s'étendra au-delà de la zone visible. Par exemple, si gauche = 0,5 et droite = 1,0, la moitié sera la zone graphique et la gauche sera beaucoup de graphique vide. Et toujours à gauche <à droite. La relation entre le haut et le bas est similaire.

## Si vous souhaitez utiliser la police japonaise dans le graphique

```python
fp = FontProperties(fname='C:\Windows\Fonts\YUGOTHL.TTC`. size=10)

En quelque sorte,

plt.xtics(fontproperties=fp)
plt.ytics(fontproperties=fp)

Si vous le faites, les caractères japonais ne seront pas déformés sur l'axe des x ou sur l'axe des y. Vous pouvez utiliser n'importe quelle police de votre choix. Vous pouvez le trouver en le recherchant dans l'Explorateur. Cependant, comme ce sera une interface graphique pour afficher les polices, il peut être un peu gênant de voir le chemin.

Si vous souhaitez utiliser le japonais sur l'étiquette,

plt.ylabel('étiquette', fontproperties=fp)

est.

Afficher ou enregistrer le graphique

L'affichage du graphique tracé est

plt.show()

Si vous souhaitez enregistrer

plt.savefig('nom de fichier')

Lors de l'enregistrement d'un fichier, vous pouvez également spécifier une résolution telle que plt.savefig ('file name', dpi = 300). Si vous souhaitez utiliser la date dans le nom du fichier, par exemple

today = datetime.datetime.now()
plt.savefig("nom de fichier_{}-{}-{}.png ".format(today.year, today.month, today.day))

Il existe un moyen de le faire (exemple: nom de fichier_2016-08-14.png). Je pense qu'il existe un moyen plus intelligent, mais je le sais seulement. Cependant, la fonction de formatage est pratique, n'est-ce pas?

Recommended Posts

Extraire les lignes qui remplissent les conditions d'Excel contenant des données de date (% Y /% m /% d)
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
[python] Déplacer les fichiers qui remplissent les conditions
python> Obtenir aaaammjj à partir du type de date> parsed = time.strptime (mddt) / yyyymmdd = time.strftime ("% Y% m% d", analysé)
Suppression des sommets qualifiants dans networkx
Celui qui représente graphiquement celui qui a obtenu les données fitbit du serveur
Extraire uniquement les éléments qui répondent à des conditions spécifiques en Python