Cet article est un mémorandum d'analyse de données par python à l'aide de pandas. Je décrirai brièvement les bases. Les variables auxquelles sont affectées les données lues par les pandas sont les suivantes.
Bibliothèque d'analyse de données Python
Exemple d'importation (ci-après, l'exemple d'utilisation est décrit dans pd)
import pandas as pd
an_data = pd.read_csv("<Nom de fichier CSV>")
an_data = pd.read_excel("<Nom du fichier Excel>")
Utile lorsque vous souhaitez vérifier le contenu des données
an_data.head()
Décrit le processus lors de la combinaison de données lues séparément. Nom de la première donnée: an_data1 Deuxième nom de données: an_data2
Combinez les données verticalement. (Si vous définissez ignore_index = True, l'index sera réaffecté)
concat_data = pd.concat([an_data1, an_data2], ignore_index=True)
Combinez les données horizontalement.
merge_data = pd.merge(an_data1, an_data2[[<Combinez des clés spécifiques>]], on="<Rejoindre la clé>", how=left)
Changer la chaîne de caractères des données reconnues en données de date
an_data["date"] = pd.to_datetime(an_data["date"])
Extraire uniquement l'année et le mois
an_data["Année mois"] = an_data["date"].dt.strftime("%Y%m")
Des nombres mystérieux sont lus pour des données telles qu'Excel, comme indiqué ci-dessous. Rendre possible de traiter des nombres mystérieux comme données de date
ch_time = pd.to_timedelta(an_data.loc[flg_num, "date"].astype("float"), unit="D") + pd.to_datetime("1900/01/01")
Si vous traitez un niveau supérieur, il sera séparé par des tirets tels que AAAA-MM-JJ. Il est gênant s'il est mélangé avec une date séparée par des barres obliques, donc unifiez le format (AAAA-MM-JJ).
ch_time = pd.to_datetime(an_data.loc[~flg_num, "date"])
Ajout d'index contenant des données nulles
an_data.isnull().sum()
Contient des données nulles ou des sorties booléennes (l'axe est 0 pour vertical, 1 pour horizontal)
an_data.isnull().any(axis=0)
Le nombre de données, la moyenne, l'écart type et le résumé en quintuple sont affichés.
an_data.describe()
<Lire les données>.dtypes
Avec l'option as_index = False, l'index qui est automatiquement créé avec le nom spécifié par groupby n'est pas créé.
an_data.groupby(["<Colonne spécifique>"]).sum()["<Une autre colonne>"]
Il est possible de spécifier plusieurs colonnes spécifiques et différentes colonnes.
an_data.groupby(["<Colonne spécifique A>", "<Colonne spécifique B>"]).sum()["<Une autre colonne A">, "<Une autre colonne b>"]
tmp = an_data.groupby(["<Colonne spécifique>"]).count()["<Une autre colonne>"]
Vous pouvez générer une moyenne, etc. en utilisant agg
tmp = an_data.groupby("<Colonne spécifique>").agg("mean", "median", "max", "min")["<La colonne que vous souhaitez agréger>"]
pivot_table
Créer une nouvelle table
an_data = pd.pivot_table(an_data, index="<Nom de la colonne que vous souhaitez indexer>", columns"<Le nom de la colonne que vous voulez être colonne>", values=["<Valeurs de colonne que vous souhaitez afficher dans la table>"], aggfunc="", fill_value=0
ascending = True est dans l'ordre croissant
an_data.sort_values(by=["<Colonne cible de tri principale>"], ascending=True)
an_data["test_val"] = an_data["test_val"].str.replace(" ", "")
an_data["test_val"] = an_data["test_val"].str.replace(" ", "")
print(len(pd.unique(an_data["val"])))
print(pd.unique(an_data["val"]))
flg_num = an_data["<Nom de colonne>"].astype("str").str.isdigit()
flg_num.sum()
loc Désignation de l'étiquette
an_data.loc[:, [<column01>, <column02>]]
an_data.loc[[True, False, True, False], [False, False, True]]
iloc Désignation du numéro
an_data.iloc[[0:2], [2:4]]
an_data.iloc[[False, True, True], [False, True, False]]
Spécifier inplace = True modifiera les données d'origine
an_data.rename(columns={"<Nom avant changement>":"<Nom après changement>"}, index={"<Nom avant changement>":"<Nom après changement>"}, inplace=True)
Étant donné que la valeur d'index est réaffectée, l'index n'est pas couvert.
an_data = an_data.reset_index(drop=False)
an_data = an_data.drop("<Articles que vous souhaitez déposer>", axis=1)
where Utilisez où modifier la valeur de l'élément qui "ne correspond pas" à la condition Dans l'exemple suivant, si la valeur de <Élément de comparaison> n'est pas égale ou inférieure à 5, la valeur de <Élément cible> est remplacée par 1.
an_data["<Élément cible>"] = an_data["<Élément cible>"].where(an_data["<Articles de comparaison>"]<5, 1)
relativedelta
delta = relative_delta(dtime1, dtime2)
Le contenu de delta est la différence entre dtime1 et dtime2 (dtime1 est la dernière date))
an_data = an_data.dropna(subsent=["<Nom de la colonne où la valeur manquante existe>"])
Le remplacement de la pièce manquante est le suivant (rempli de 0)
an_data = an_data.fillna(0)
La confirmation est possible à
an_data.isna().sum()
an_data.to_csv("", index=False)
Exemple d'importation de bibliothèque de sortie graphique (ci-après, l'exemple d'utilisation est décrit dans plt) De plus, la deuxième ligne décrit un exemple d'utilisation avec un notebook jupyter.
import matplotlib.pyplot as plt
%matplotlib inline
Lire les données à tracer (répertoriées dans l'ordre axe horizontal, axe vertical, option) Au moins une étiquette doit être attachée
plt.plot(an_data.index, an_data['<Éléments sur l'axe vertical>'], label='label-1')
plt.plot(an_data.index, an_data['<Éléments sur l'axe vertical>'], label='label-2')
plt.plot(an_data.index, an_data['<Éléments sur l'axe vertical>'], label='label-3')
Tracer les données lues sur un graphique
plt.legend()