3. Traitement des données pandas

Pourquoi?Non. 2021-09-15 04:03:58
traitement des donn es pandas


3.1 ApplyFonction personnalisée

3.1.1 applyIntroduction

pandas De apply() La fonction peut agir sur Series Ou tout DataFrame,La fonction est également de traverser automatiquement tout Series Ou DataFrame, Exécuter la fonction spécifiée pour chaque élément.

  • PandasOffre beaucoup de traitement de donnéesAPI,Mais quand il est offertAPIQuand les besoins ne sont pas satisfaits,Vous devez écrire vos propres fonctions de traitement de données, Disponible en ce momentapplyFonctions
  • applyLa fonction peut recevoir une fonction personnalisée, Vous pouvezDataFrameOui./Les données de colonne sont transmises au traitement de la fonction personnalisée
  • applyLa fonction est similaire à l'écriture d'unforCycle, Traverser les lignes、Chaque élément de la colonne, Mais plus que d'utiliserforL'efficacité du cycle est beaucoup plus élevée

3.1.2 SeriesDeapplyFonction personnalisée【Points saillants】

  • SeriesDeapplyParamètres reçus par la fonction personnaliséexEst une valeur numérique
def my_exp(x,e):
return x+e
# series.apply(Nom de la fonction personnalisée, args=(Paramètres1, Paramètres2, ...))
# argsLe paramètre doit recevoir un ancêtre;Pas besoin d'écrire sans paramètresargs=
df['Nom de la colonne'].apply(my_exp, args=(3,))
Copier le Code

3.1.3 DataFrameDeapplyFonction personnalisée【Points saillants】

Méthodes d'utilisation etSeriesDeapply Utilisation cohérente des fonctions personnalisées , Par exemple, l'utilisation d'une fonction personnalisée dans plusieurs paramètres est la même

  • Exécution par défaut de la traversée des colonnes

    • dfDeapplyParamètres reçus par la fonction personnaliséex La valeur par défaut est une colonne de données
def my_exp2(x):
return x+2
df.apply(my_exp2)
Copier le Code
  • Exécution par traversée de ligne

    • Paramètresaxis=1Fairex La valeur de est une ligne de données
def my_exp2(x):
return x+2
df.apply(my_exp2, axis=1)
Copier le Code
  • Appuyez.df Chaque valeur dans l'exécution transversale
def my_exp2(x):
return x+2
df.applymap(my_exp2)
Copier le Code

3.1.4 Quantification fonctionnelle 【Je sais】

  • np.vectorize()
def foo(x, y):
if x != 0: # x,yTous.seriesObjet, Impossible de comparer avec le type de nombre
return x + y
# foo(df['Nom de la colonne1'], df['Nom de la colonne2']) # Erreur signalée!
import numpy as np
bar = np.vectorize(foo)
bar(df['Nom de la colonne1'], df['Nom de la colonne2'])
Copier le Code
  • Utilisation de décorateurs pour les fonctions personnalisées
import numpy as np
@np.vectorize
def foo(x, y):
if x != 0: # x,yTous.seriesObjet, Impossible de comparer avec le type de nombre
return x + y
foo(df['Nom de la colonne1'], df['Nom de la colonne2'])
Copier le Code

3.1.5 lambdaFonction anonyme【Points saillants】

  • Concept

    • Expression de fonction sans nom de fonction , Peut être utilisé directement comme paramètre
  • Action

    • Simplifier le Code
    • Améliorer la lisibilité du Code
    • Il n'est pas nécessaire de tenir compte de la désignation des fonctions
  • Utilisation

# Mots cléslambda Représente une fonction anonyme , Arguments avant deux points ,Il peut y en avoir plusieurs.,Séparés par des virgules, Valeur de retour à droite du point - virgule
df.apply(lambda x: x+1)
Copier le Code

3.2 Groupe de données

3.2.1 aggEtaggregateAgrégation【Points saillants】

  • Une seule colonne après regroupement utilise plusieurs fonctions d'agrégation

    • Utiliser plusieurs fonctions d'agrégation intégrées en même temps ou numpyFonction d'agrégation,Tout en unPythonDans la Liste, Et passer toute la liste dans aggOuaggregateMoyenne; Renvoie les colonnes groupées comme Index , Chaque résultat de calcul agrégé est nouveau en tant que colonne df
df.groupby('Nom de la colonne1').Nom de la colonne2.agg(['max', 'min'])
# max, min Pourpandas Nom de la fonction d'agrégation intégrée
# Peut également être transféré dansnumpy Fonction d'agrégation pour ,np.mean,np.max
df.groupby('Nom de la colonne1').Nom de la colonne2.agg(['max',np.mean])
Copier le Code
  • Utiliser la fonction d'agrégation pour plusieurs colonnes après regroupement

    • agg La fonction peut passer dans le dictionnaire ,Dictionnairekey- Oui.df Nom de la colonne ,AveckeyCorrespondantvalue- Oui.pandas Fonction d'agrégation intégrée 、 Chaîne de son nom ;; Renvoie les colonnes groupées comme Index , Chaque résultat de calcul agrégé est nouveau en tant que colonne df
df.groupby('Nom de la colonne1').agg({
'Nom de la colonne2':'mean',
'Nom de la colonne3':'sum',
'Nom de la colonne4':np.max
})
Copier le Code
  • Utiliser une fonction d'agrégation personnalisée après regroupement
def my_mean(values, args1, args2):
''' Fonction de moyenne calculée personnalisée values Est un paramètre fixe , Pour l'entrée seriesObjet '''
args1+args2
n = len(values) # Obtenir le nombre d'entrées de données
sum = 0
for value in values:
sum += value
return(sum/n)
# Appeler une fonction personnalisée
df.groupby('Nom de la colonne1')['Nom de la colonne2'].agg(my_mean, args1=xxx, args2=xxx)
Copier le Code

.2.2 transformConversion【Points saillants】

transform Conversion,J'ai besoin d'aide.DataFrame Valeur passée à une fonction , Ensuite, la fonction "Conversion"Données.

aggregate(Agrégation) Renvoie une seule valeur agrégée , Le nombre de colonnes groupées renvoie autant de données qu'il y a de groupes ,Mais...transform Ne réduit pas la quantité de données

  • Utiliser les fonctions intégrées après le regroupement

    • Par nom de colonne 1 Après le regroupement , Nom de la colonne 2 Les valeurs sont agrégées ,RetourseriesObjet
df.groupby('Nom de la colonne1')['Nom de la colonne2'].transform('sum')
# sum- Oui.pandas Nom de la fonction d'agrégation intégrée ,Somme
Copier le Code
  • Utiliser des fonctions personnalisées après le regroupement
# Personnaliser une fonction de calcul
def foo(x, y):
return x + y
df.groupby('Nom de la colonne1')['Nom de la colonne2'].transform(foo, y=3)
Copier le Code

3.2.3 filterFiltration【Points saillants】

  • groupby Méthode suivie filterMéthodes,filter Passe une fonction anonyme qui renvoie une valeur booléenne , Le paramètre d'entrée de cette fonction est groupby Chaque ensemble de données après regroupement ,RetourFalse Les données sont filtrées ; Retour au nouveau dfDonnées
df.groupby('Nom de la colonne').filter(Fonction anonyme)
Copier le Code

3.2.4 DataFrameGroupByObjet【Compris.】

  • Voirgroupby La ligne de données de chaque objet groupé après le regroupement
df.groupby('Nom de la colonne').groups
# Retour au dictionnaire {'Female': [198, 124, 101], 'Male': [24, 6, 153, 211, 176, 192, 9]}
# Alorsdf Il doit y avoir seulement FemaleEtMale Deux types de données
# Dans le DictionnairekeyC'est original.df Valeurs de catégorie pour les colonnes groupées dans ;valueC'est unpythonListe, Les chiffres sont des données brutes. df Valeur de l'indice de ligne pour
Copier le Code
  • Obtient un objet groupé basé sur la valeur de colonne de la colonne groupée et renvoie df
df.groupby('Nom de la colonne').get_group(' Valeur d'une catégorie dans une colonne groupée ')
Copier le Code
  • Les objets groupés ne peuvent être parcourus qu'en utilisant des indices pour obtenir des groupes spécifiques
for group in df.groupby('Nom de la colonne'):
print(group)
### Le code suivant est incorrect !!!
df.groupby('Nom de la colonne')[0]
Copier le Code

3.3 Tableau pivot

3.3.1 Concept

Le tableau pivot est basé sur le tableau de données original 、 Présenter les données sommaires selon certaines règles ;Etexcel Le tableau pivot de

3.3.2 pivot_table()Utilisation【Points saillants】

pd.pivot_table(
data, # Pour pivoter df
index='Nom de la colonne1', # Nom de colonne groupé comme index de ligne
columns='Nom de la colonne2', # Les noms de colonnes groupés sont indexés en colonnes
values='Nom de la colonne3', # Colonnes à agréger
aggfunc=' Nom de la fonction d'agrégation intégrée ', # Fonction d'agrégation
margins=True # Par défautFalse, Si ouiTrue, Sur la dernière ligne et la dernière colonne , Ligne par colonne aggfunc Fonction d'agrégation spécifiée par le paramètre
)
Copier le Code
  • Mode d'emploi: Par nom de colonne 1Comme Index, Par nom de colonne 2Groupe, Nom de la colonne 3Utiliserpandas Fonction d'agrégation intégrée pour le calcul ,Retour au nouveaudfObjet

  • Description des paramètres:

    • index:Retourdf Index des lignes pour , Et les grouper ; Nom de colonne des données brutes entrantes
    • columns:Retourdf Index des colonnes ; Nom de colonne des données brutes entrantes , Groupe par colonne
    • values: Nom de colonne des données brutes à agréger
    • aggfunc: Chaîne de noms de fonctions agrégées intégrée

3.4 datetimeType de données【Je sais】

3.4.1 pandas Données converties en datetime

  • pd.to_datetime()
df['Nom de la colonne'] = pd.to_datetime(df['Nom de la colonne'])
Copier le Code
  • Lors du chargement des données parse_dates=[Indice de colonne/Nom de la colonne]
pd.read_csv('path', parse_dates=[Indice de colonne/'Nom de la colonne'])
Copier le Code

3.4.2 Extraire les parties de la date

  • Type d'horodatage objet extraire les parties de la date
d = pd.to_datetime('2020-06-20')
# d ==> Timestamp('2020-06-20 00:00:00')
d.year
d.month
d.day
d.hour
d.minute
d.second
d.quarter # Trimestre
d.weekday() # Le jour de la semaine 0 C'est lundi. 1 C'est mardi. 6 C'est dimanche.
Copier le Code
  • df L'objet date de l'heure dans la colonne extrait les parties de la date
df['Date'].dt.year
df['Date'].dt.month
df['Date'].dt.day
df['Date'].dt.hour
df['Date'].dt.minute
df['Date'].dt.second
df['Date'].dt.quarter # Trimestre
Copier le Code

3.4.3 Opérations de date et TimedeltaType

  • Appel direct à la fonction d'agrégation
df['Date'].min()
Copier le Code
  • Calcul direct de la différence de temps
df['Date'] - df['Date'].min()
# Le résultat esttimedeltaType
Copier le Code

3.4.4 Date Time Type Index

Données chronologiques, Données enregistrées en continu à une certaine distance ou à un certain point dans le temps

  • Oui.datetime La colonne du type de temps est définie à df L'index devient DatetimeIndex Type: les données peuvent être extraites par mois / année / jour
# Définir la colonne type de temps comme colonne Index
df.index = df['Date']
# La valeur de la colonne index ressemble à 2015-08-19
df['2016'] # Sous - ensemble par année df
df['2016-06'] # Sous - ensemble par année df: Toutes les données de ligne complètes admissibles
####Attention!!!! Ce qui précède est une opération d'acquisition de données de type date - heure avec index de ligne pour les dates consécutives ####
# Obtenir des données lorsque l'index de ligne de type date - heure n'est pas continu ,df.loc[]
df.loc['2016']
df.loc['2016-06']
Copier le Code
  • Oui.timedelta La colonne du type de différence de temps est définie à df L'index devient TimedeltaIndex Type les données peuvent maintenant être extraites par plage
# Réglagetimedelta Le type de différence de temps est la colonne Index
df.index = df['Date'] - df['Date'].min()
# La valeur de la colonne index ressemble à
#0 days
#1 days
#2 days
#...
# Un sous - ensemble peut être obtenu à partir de la plage df: Toutes les données de ligne complètes admissibles
tesla['0 days':'4 days']
Copier le Code

3.4.5 pd.date_range()

  • Génération continue DatetimeIndexDonnées de type
pd.date_range(start='2014-12-31', end='2015-01-05', freq='D')
# Paramètresfreq='D' Indique une date continue
# Paramètresfreq='B' Indique que seuls les jours ouvrables sont retournés
#### Retour à la page suivante ####
###########################################
DatetimeIndex(
[
'2014-12-31',
'2015-01-01',
'2015-01-02',
'2015-01-03',
'2015-01-04',
'2015-01-05'
],
dtype='datetime64[ns]',
freq='D' # freq Les paramètres sont détaillés à la fin Paramètres du cycle temporel
)
###########################################
Copier le Code

3.4.6 df.reindex()

  • En continu DatetimeIndex Type data Rebuild Discontinuous DatetimeIndexIndex
df.index = df['Date']
date_range = pd.date_range(start='2014-12-31', end='2015-01-05', freq='D')
df = df.reindex(date_range)
Copier le Code

3.4.7 df.between_time()

  • C'est exact.DatetimeIndex Indexé df Vous pouvez interroger les lignes de données complètes par heure de début et de fin
# between_timeFonctions,include_end=False Indique que l'heure de fin n'est pas incluse ,Par défautTrue,Il y a aussiinclude_startParamètres
df.between_time('4:00', '5:00', include_end=False)
Copier le Code

3.4.8 df.at_time()

  • C'est exact.DatetimeIndex Indexé df Les lignes de données complètes peuvent être retournées par échantillonnage ponctuel
df.at_time('5:47')
Copier le Code

3.4.9 df.set_index()

  • Définir une colonne à df Index des lignes pour
df = df.set_index('Nom de la colonne')
# df.reset_index() Réinitialiser l'index
Copier le Code

3.4.10 df.sort_index()

  • Trier les index de ligne
df = df.sort_index()
# Ordre croissant par défaut,ascending=FalseOrdre décroissant
Copier le Code

3.4.11 df.resample()

  • Statistiques groupées par séries chronologiques
df.resample('W').size() # Nombre total de statistiques par semaine
df.resample('Q')['Nom de la colonne1', 'Nom de la colonne2'].sum() # Statistiques agrégées trimestrielles pour les colonnes spécifiées
Copier le Code
版权声明
本文为[Pourquoi?Non.]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/09/20210915040243159t.html

  1. 程序員是這樣學習【中藥學】知識的,先用python采集分析一波
  2. Python - pydantic(2)嵌套模型
  3. Python - 面向对象编程 - __dict__
  4. Python - 面向对象编程 - 反射 hasattr、getattr、getattr、delattr
  5. Python - 面向对象编程 - 实战(6)
  6. Python - 面向对象编程 - 魔术方法(双下划线方法)
  7. Python - 面向对象编程 - __new__() 和单例模式
  8. Python - 面向对象编程 - __call__()
  9. Python - repr()、str() 的区别
  10. Python - 面向对象编程 - __repr__()
  11. Python - eval()
  12. 用 Django REST framework 来实现一次性验证码(OTP)
  13. Python code checking tool (static code review)
  14. Python QT GUI Design: overview of UI interface visualization components and properties (Fundamentals - 3)
  15. 【算法学习】1863. 找出所有子集的异或总和再求和(java / c / c++ / python / go / rust)
  16. [apprentissage de l'algorithme] 1863. Trouver la somme Xor de tous les sous - ensembles (Java / C / C + + / python / go / Rust)
  17. Python code checking tool (static code review)
  18. Python 万能代码模版:爬虫代码篇
  19. Modèle de code universel Python: Code crawler
  20. 收藏 | Python 之 Pandas系统性总结!
  21. Take you to learn more about nginx basic login authentication: generating passwords using Python
  22. 超硬核Python避坑学习方案奉上!入门到就业一篇就搞定!
  23. Talk about how JMeter executes Python scripts concurrently
  24. Talk about how JMeter executes Python scripts concurrently
  25. Talk about how JMeter executes Python scripts concurrently
  26. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  27. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  28. python內置函數通過字符串的方式來執行函數代碼塊,類似java的反射機制相當强大!
  29. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  30. Python module 1
  31. Python tip: use namedtuple instead of manually created classes
  32. Python - poetry(3)配置项详解
  33. Python - poetry(3)配置项详解
  34. Python - poetry(3)配置項詳解
  35. Python - poetry(3)配置項詳解
  36. Python - détails de l'élément de configuration Poetry (3)
  37. Python - détails de l'élément de configuration Poetry (3)
  38. Python案例实战,pygame模块,Python实现字母代码雨
  39. Python calculation vector angle code
  40. Python基础面试题解读|《Python面试100层》|第1层
  41. 面对小白的pandas命令手册+练习题【三万字详解】
  42. 面對小白的pandas命令手册+練習題【三萬字詳解】
  43. Face au Manuel de commande pandas de Xiaobai + question d'exercice [30 000 mots pour plus de détails]
  44. Interprétation des questions d'entrevue de base Python | 100 couches d'entrevue Python | couche 1
  45. Python data structure and algorithm (17) -- merge sort
  46. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  47. Python笔记-uiautomator2截图点击,OpenCV找图
  48. Python文档阅读笔记-OpenCV中Template Matching
  49. Python笔记-利用OpenCV的matchTemplate屏幕找图并使用pyautogui点击
  50. Python筆記-利用OpenCV的matchTemplate屏幕找圖並使用pyautogui點擊
  51. Notes python - utilisez l'écran matchtemplate d'OpenCV pour trouver des images et cliquez sur
  52. Notes de lecture de documents python - Matching de modèles dans OpenCV
  53. Notes python - capture d'écran de l'automate 2 Cliquez pour ouvrir la vue
  54. python链接云服务器的mysql8
  55. python鏈接雲服務器的mysql8
  56. Mysql8 pour les serveurs Cloud liés Python
  57. Python资源大集合,要的话可以拿走!
  58. ️万字【Python基础】保姆式教学️,小白快速入门Python!
  59. ️萬字【Python基礎】保姆式教學️,小白快速入門Python!
  60. Wanzi [base Python] Baby - sitting Teaching, Little White Quick Start Python!