L'analyse des données est devenue populaire ces jours-ci, je vais donc essayer de l'analyser en montrant un échantillon du code.
le code
L'environnement d'exécution sera Python3.
Dans cet article, nous ferons ce qui suit:
--Lire CSV --Conversion de colonne simple --Agréger et dessiner à partir de différentes perspectives
Utilisez «Seaborn» pour dessiner.
Seaborn: statistical data visualization
Les données à analyser sont les suivantes.
target.csv
datetime, id, value
20170606121314, 1,2
20170606121315, 1,3
20170606121316, 1,4
20170608121616, 1,4
20170608121617, 1,1
20170608121618, 1,2
20170606121540, 2,10
20170606121541, 2,8
20170606121542, 2,11
20170608121543, 2,4
20170606134002, 3,21
20170606134003, 3,10
20170606134004, 3,4
20170608134005, 3,50
datetime
est une chaîne d'année, de mois, de jour, d'heure, de minute et de seconde.
On suppose également qu'une certaine «valeur» se produit toutes les secondes pendant une certaine période pendant plusieurs secondes pour chaque identifiant.
python
import pandas as pd
#Lecture CSV
df = pd.read_csv("target.csv",sep=",")
df.columns = ["datetime","id","value"]
Comme méthode pour vérifier s'il a été lu
df.head()
Ce sera. Ensuite, la sortie sera la suivante.
datetime | id | value | |
---|---|---|---|
0 | 20170606121314 | 1 | 2 |
1 | 20170606121315 | 1 | 3 |
2 | 20170606121316 | 1 | 4 |
3 | 20170608121616 | 1 | 4 |
4 | 20170608121617 | 1 | 1 |
La méthode head ()
est une méthode qui affiche les 5 premières lignes de données et est souvent utilisée pour vérifier le contenu des données.
Il existe également une méthode appelée tail ()
, qui affiche 5 lignes de données à partir de la fin des données.
Le résultat de l'affichage est le suivant.
datetime | id | value | |
---|---|---|---|
9 | 2017-06-08 12:15:43 | 2 | 4 |
10 | 2017-06-06 13:40:02 | 3 | 21 |
11 | 2017-06-06 13:40:03 | 3 | 10 |
12 | 2017-06-06 13:40:04 | 3 | 4 |
13 | 2017-06-08 13:40:05 | 3 | 50 |
De plus, dans la ligne suivante, la colonne est définie dans le dataframe.
python
df.columns = ["datetime","id","value"]
python
from datetime import datetime as dt
df.datetime = df.datetime.apply(lambda d: dt.strptime(str(d), "%Y%m%d%H%M%S"))
Le but de cette opération est de faciliter l'utilisation de la colonne de date. Ce que nous faisons, c'est accéder à la valeur de chaque ligne de la colonne datetime avec df.datetime
et analyser la chaîne avec la méthode strptime
. Cela permet aux valeurs qui étaient à l'origine des chaînes d'être converties en types de date et d'heure.
python
df_by_id= df.groupby("id")["value"].count().reset_index()
df_by_id
groupby (" id ")
agrège les enregistrements par valeur dans la colonne id. Le nombre d'enregistrements par id est compté par count ()
.
Le contenu de df_byid est le suivant.
id | value | |
---|---|---|
0 | 1 | 6 |
1 | 2 | 4 |
2 | 3 | 4 |
python
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
id_df = pd.DataFrame(df_by_id)
sns.distplot(id_df.value, kde=False, rug=False, axlabel="record_count",bins=10)
Nous utilisons une bibliothèque appelée «seaborn» qui dessine de belles figures.
python
df_value_sum= df.groupby("id")["value"].sum().reset_index()
La partie qui est count ()
ci-dessus est juste sum ()
.
Le contenu de df_value_sum est le suivant.
id | value | |
---|---|---|
0 | 1 | 16 |
1 | 2 | 33 |
2 | 3 | 85 |
python
start_datetime_by_id = df.groupby(["id"])["datetime"].first().reset_index()
df_date = pd.DataFrame(start_datetime_by_id)
Le contenu de df_date est le suivant.
id | datetime | |
---|---|---|
0 | 1 | 2017-06-06 12:13:14 |
1 | 2 | 2017-06-06 12:15:40 |
2 | 3 | 2017-06-06 13:40:02 |
python
sns.distplot(date_df.datetime.dt.month, kde=False, rug=False, axlabel="record_generate_date",hist_kws={"range": [1,30]}, bins=30)
Avec l'option hist_kws = {" range ": [1,30]}
, l'axe horizontal est dessiné dans la plage de 0-30. C'est à partir des données du 30 juin 2017 que les données se sont produites.
C'est dans un souci de clarté.
Recommended Posts