Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅱ)

Lmandcc 2021-10-29 02:00:05
preliminary knowledge python core use

2、Connaissances préparatoires-pythonUtilisation de base base base commune d'analyse des données(En bas.)

Généralités

Python C'est le langage de programmation le plus populaire au monde aujourd'hui,Et l'un de ses plus grands domaines d'application est l'analyse des données.InpythonParmi les nombreux outils d'analyse des données,pandas- Oui.pythonBase d'analyse de données très couramment utilisée dans,Dans l'analyse des données,Apprentissage automatique,Des domaines tels que l'apprentissage profond sont fréquemment utilisés.Utiliser Pandas On peut. Excel/CSV/TXT/MySQL Attendez que les données soient lues,Ensuite, on procède à divers lavages、Filtration、Perspective、Analyse agrégée,Vous pouvez également dessiner un diagramme linéaire directement、Diagrammes d'analyse des données comme les diagrammes à secteurs,Fonctionnellement, il peut automatiser le traitement de gros fichiers,Capable de réaliser Excel Presque toutes les fonctions et plus puissantes.

Cette expérience se déroulera de façon pratique,IntroductionpandasUtilisation de base de la base d'analyse des données,Laissez tout le monde maîtriser rapidement en peu de tempspythonBase d'analyse des données pourpandasUtilisation de,Constituer une réserve de connaissances pour le codage ultérieur des projets

Environnement expérimental

  • Python 3.7
  • Pycharm

Tâche 2:PandasAnalyse des données sur le terrain-1

【Objectifs de la Mission】

L'objectif principal de cette tâche est d'utiliserpandasAnalyse des données,Pour que tout le monde comprennepandasFonctions suivantes du module:

  • Comprendre les données
  • Analyse des problèmes de données
  • Données de nettoyage
  • Code de consolidation

【Étapes de la Mission】

1、Travaux préparatoires

Ouvre.CMDDerrière la fenêtre,Exécutez la commande suivante,Ouvre.jupyter notebookÉditeur

jupyter notebook

Après avoir exécuté avec succès la commande ci - dessus,Le navigateur par défaut s'ouvre automatiquement,Comme le montre la figure ci - dessous:

img

Après l'ouverture réussie du Navigateur,Créer comme suit notebook Documentation

img

NouveaunotebookEffectuer une opération de renommage

img

img

2、notebook Une fois le fichier créé,Ensuite, dans le nouveau notebook Code d'écriture

  • Comprendre les données

Avant de traiter des données ,Notre première tâche est de comprendre les données et à quoi elles servent. Nous essayons de comprendre les colonnes de données /D'accord、Enregistrement、Format des données、 Erreur sémantique 、 Entrées manquantes et mauvais formatage ,Pour avoir une idée générale de ce qu'il faut faire avant d'analyser les données“Nettoyage”Le travail.

Cette fois, il nous en faut un. patient_heart_rate.csv Fichier de données pour, C'est très petit. , Ça nous donne un coup d'oeil. .Ce chiffre est csv Format.Les données décrivent le rythme cardiaque de différentes personnes à différents moments. L'information sur la colonne des données comprend l'âge de la personne. 、Poids corporel、 Sexe et fréquence cardiaque à différents moments .

  • Charger les données pour voir l'ensemble de données
import pandas as pd
df = pd.read_csv('data/patient_heart_rate.csv')
df.head()

Les résultats sont les suivants:

img

Analyse des problèmes de données

  1. Pas d'en - tête de colonne
  2. Une colonne a plusieurs paramètres
  3. L'Unit é des données de colonne n'est pas uniforme
  4. Valeurs manquantes
  5. Données en double
  6. Non ASCII Les caractères
  7. Certains en - têtes de colonne devraient être des données , Ne doit pas être un paramètre de colonne

3、Données de nettoyage

3.1、 Pas d'en - tête de colonne

Si nous obtenons des données qui n'ont pas d'en - têtes comme celles ci - dessus,Pandas En lisant csv Fournit des paramètres pour personnaliser les en - têtes de colonne .Ensuite, nous allons lire en définissant manuellement les paramètres d'en - tête de colonne csv,Les codes sont les suivants::

import pandas as pd
column_names= ['id', 'name', 'age', 'weight','m0006',
'm0612','m1218','f0006','f0612','f1218']
df = pd.read_csv('data/patient_heart_rate.csv', names = column_names)
df.head()

Les résultats sont les suivants:

img

Les résultats ci - dessus montrent nos en - têtes de colonne personnalisés. On le lit juste cette fois. csv Quand, Un paramètre de plus. names = column_names,C'est ce qu'on dit. Pandas Utilisez les en - têtes de colonne que nous fournissons .

4、 Une colonne a plusieurs paramètres

Pas difficile à trouver dans les données ,Name La colonne contient deux paramètres Firtname Et Lastname. Pour le nettoyage des données ,Nous avons décidé de name Fractionnement des colonnes Firstname Et Lastname

Utiliser str.split(expand=True), Diviser la liste en nouvelles colonnes ,Encore une fois Name Colonne Supprimer

df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)
df.head()

Les résultats sont les suivants:

img

5、 L'Unit é des données de colonne n'est pas uniforme

Si vous regardez attentivement l'ensemble de données, vous pouvez voir Weight Les unités des colonnes ne sont pas uniformes . Certaines unités sont kgs, Certaines unités sont lbs

lbs_weight_s = df[df.weight.str.contains("lbs").fillna(False)]['weight']
lbs_weight_s = lbs_weight_s.apply(lambda lbs: "%.2fkgs" % (float(lbs[:-3])/2.2) )
df.loc[lbs_weight_s.index,'weight'] = lbs_weight_s

Les résultats sont les suivants:

image.png

6、Traitement des valeurs manquantes

Certains âges dans l'ensemble de données 、Poids corporel、 La fréquence cardiaque est manquante . Nous rencontrons à nouveau les problèmes les plus courants de nettoyage des données —— Données manquantes . Généralement parce que ces informations ne sont pas collectées . Nous pouvons consulter des experts de l'industrie . Méthodes typiques de traitement des données manquantes :

  • Supprimer: Supprimer les enregistrements manquants
  • Faux: Remplacer par une valeur initiale légale , Les types numériques peuvent être utilisés 0, Une chaîne peut être vide “”
  • Moyenne: Utiliser la moyenne de la colonne courante
  • Haute fréquence: Utiliser les données les plus fréquentes de la colonne courante
  • Optimisation des sources : Si vous pouvez communiquer avec l'équipe de collecte de données , Résoudre les problèmes ensemble ,Trouver des solutions.

7、 Traitement des données en double

Parfois, il y a des données en double dans l'ensemble de données, Avant d'exécuter le code suivant pour observer l'ensemble de données 10Données

df.head(10)

Les résultats sont les suivants:

img

Observer les résultats ci - dessus ,Des données en double peuvent également être trouvées dans notre ensemble de données,Comme suit

img

Commençons par vérifier s'il y a des enregistrements en double . S'il y a des enregistrements en double ,Juste utiliser Pandas Fourni drop_duplicates() Pour supprimer les données en double .

df.drop_duplicates(['first_name','last_name'],inplace=True)
df.head(10)

Les résultats sont les suivants:

img

Supprimerweight Données dupliquées sur le terrain

df.drop_duplicates(['weight'],inplace=True)
df.head(10)

Les résultats sont les suivants

img

8、 NonASCII Les caractères

Dans un ensemble de données Fristname Et Lastname Il y a des choses qui ne sont pas ASCII Caractères de.

Traitement non ASCII Les données sont disponibles de plusieurs façons

  • Supprimer
  • Remplacer
  • Juste un indice.

Nous utilisons la suppression :

df['first_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)df['last_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)df.head()

Les résultats sont les suivants:

img

9、 Certains en - têtes de colonne devraient être des données , Ne doit pas être un paramètre de colonne

Certains en - têtes de colonne sont composés de sexe et d'horizon temporel,Il est possible que ces données aient été converties en colonnes au cours du traitement de la collecte, Ou une règle de nommage fixe pour le collecteur . Ces valeurs doivent être ventilées par sexe. (m,f), Plage de temps en heures (00-06,06-12,12-18)

sorted_columns = ['id','age','weight','first_name','last_name']df = pd.melt(df, id_vars=sorted_columns, var_name='sex_hour', value_name='puls_rate')df = df[df.puls_rate != '-'].dropna()df = df.sort_values(['id','first_name','last_name']).reset_index()def split_sex_date(sex_hour): sex = sex_hour[:1] if 'f' == sex: sex = 'Femme' elif 'm' == sex: sex = 'Hommes' hour = sex_hour[1:] return pd.Series([sex,hour])df[['sex','hour']] = df.sex_hour.apply(split_sex_date)df.drop('sex_hour',axis=1)

Les résultats sont les suivants:

image.png

Tâche 3:PandasAnalyse des données sur le terrain-2

【Objectifs de la Mission】

L'objectif principal de cette tâche est d'utiliserpandasAnalyse des données,Pour que tout le monde comprennepandasFonctions suivantes du module:

  • Traitement des dates
  • Problèmes d'encodage des caractères

【Étapes de la Mission】

1、RÉFÉRENCES【Tâche 1】No1 Opérations en cours ,Injupyter notebook Nouveau dans l'édition notebook Documentation,Nommé pandas-data-processing-3,Comme le montre la figure ci - dessous:

img

2、Aperçu des données

Cette fois, on utilise Artworks.csv,Nous choisissons 100 Ligne de données pour compléter ce contenu .Étapes spécifiques:

  • ImporterPandas
  • Lire csv Données à DataFrame( Pour s'assurer que les données ont été téléchargées sur le chemin spécifié )

DataFrame - Oui. Pandas Structure intégrée de la présentation des données , Très rapide. ,Adoption DataFrame Nous pouvons rapidement prévisualiser et analyser les données .Les codes sont les suivants::

import pandas as pddf = pd.read_csv('./data/Artworks.csv').head(100)df.head(10)

Les résultats sont les suivants:

img

2、 Date statistique

Regardons de plus près Date Données de la colonne, Certaines données sont des fourchettes annuelles (1976-1977), Au lieu d'une seule année . Lorsque nous utilisons les données de l'année pour dessiner ,Ne peut pas être peint aussi facilement qu'une seule année. Nous l'utilisons maintenant Pandas De value_counts() Pour calculer la quantité de chaque type de données .

Tout d'abord,, Sélectionner les colonnes à compter ,Et appelle value_counts():

df['Date'].value_counts()

Les résultats sont les suivants:

img

3、 Questions relatives aux données de date

Date Données de colonne, Sauf que l'année est une plage , Il y a trois formats anormaux . Voici une liste :

  • Question 1,Calendrier(1976-77)
  • Deuxième question,Estimation(c. 1917,1917 Vers l'année)
  • Question 3, Données manquantes (Unknown)
  • Question 4., Données non significatives (n.d.)

Ensuite, nous aborderons chacune des questions ci - dessus. ,Utiliser Pandas Conversion de ces données irrégulières en données harmonisées.

Les problèmes 1 et 2 sont que les données ne sont pas correctement formatées, Les questions 3 et 4 ne sont pas des données valides. . Pour les deux premières questions ,Nous pouvons utiliser le Code pour formater les données à des fins de nettoyage,Et pourtant, Les deux dernières questions , Il ne peut être traité sur le Code que comme une valeur manquante .Simple., Nous avons traité les données des questions 3 et 4 comme suit: 0.

Question 1

Les données de la question 1 sont sur une période de deux ans. ,Nous avons choisi une de ces années comme données après le nettoyage.Par souci de simplicité,Nous utilisons l'heure de début pour remplacer les données d'un tel problème, Parce que ce temps est un nombre à quatre chiffres , Si vous souhaitez utiliser l'année de fin , Nous devons compléter les deux premiers chiffres .

Tout d'abord,, Nous devons trouver les données de la question 1 , Afin que nous puissions le mettre à jour . Pour s'assurer que les autres données ne sont pas mises à jour ,Parce que d'autres données peuvent avoir été formatées, Ou peut - être qu'on s'en occupe. .

Données sur l'horizon temporel à traiter ,Il contient“-”,De cette façon, nous pouvons filtrer les données que nous traitons à travers cette chaîne spéciale,Et puis,Adoption split() Utilisation“-” Diviser les données ,Utiliser la première partie du résultat comme résultat final du traitement.

Les codes sont les suivants:

row_with_dashes = df['Date'].str.contains('-').fillna(False)for i, dash in df[row_with_dashes].iterrows(): df.at[i,'Date'] = dash['Date'][0:4]df['Date'].value_counts()

Les résultats sont les suivants:

img

Traitement de la question II

Les données de la question 2 reflètent l'inexactitude des données elles - mêmes, Est une estimation de l'heure de l'année , Nous le convertissons en année ,Alors, Il suffit de garder les quatre derniers chiffres. , La caractéristique de ces données est qu'elles contiennent “c”,De cette façon, nous pouvons filtrer les données à convertir à travers cette fonctionnalité.

row_with_cs = df['Date'].str.contains('c').fillna(False)for i,row in df[row_with_cs].iterrows(): df.at[i,'Date'] = row['Date'][-4:]df[row_with_cs]

Les résultats sont les suivants:

img

Résoudre le problème 3 4

Assigner des valeurs initiales aux données pour cette question 3 ou 4 0

df['Date'] = df['Date'].replace('Unknown','0',regex=True)
df['Date'] = df['Date'].replace('n.d.','0',regex=True)
df['Date']

Les résultats sont les suivants:

img

4、Annexe:Code complet

Attention!: La section Présentation des données a été supprimée du code complet

import pandas as pd
df = pd.read_csv('../data/Artworks.csv').head(100)
df.head(10)
df['Date'].value_counts()
row_with_dashes = df['Date'].str.contains('-').fillna(False)
for i, dash in df[row_with_dashes].iterrows():
df.at[i,'Date'] = dash['Date'][0:4]
df['Date'].value_counts()
row_with_cs = df['Date'].str.contains('c').fillna(False)
for i,row in df[row_with_cs].iterrows():
df.at[i,'Date'] = row['Date'][-4:]
df['Date'].value_counts()
df['Date'] = df['Date'].replace('Unknown','0',regex=True)
df['Date'] = df['Date'].replace('n.d.','0',regex=True)
df['Date'].value_counts()
版权声明
本文为[Lmandcc]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211028223331047B.html

  1. J'espère que quelqu'un peut m'aider.
  2. Quelqu'un peut écrire du Code en python?
  3. Dataframe数据,用pandas.to_excel导出成excel问题
  4. Données du cadre de données, en utilisant pandas.to Exporter Excel vers un problème Excel
  5. 请问这个过期的要怎么弄呀,Python是下载的3.10版本的
  6. 請問這個過期的要怎麼弄呀,Python是下載的3.10版本的
  7. Qu'est - ce qu'on fait de ce vieux python?
  8. Python数据处理转置问题??
  9. Problèmes de transposition du traitement des données python??
  10. 使用python的pdfkit把html转pdf时,echarts无法显示
  11. python利用3维的0,1矩阵再matplotlib中画图
  12. Pycham developing Django project template tutorial
  13. Libraries commonly used in Python data analysis
  14. Python utilise une matrice tridimensionnelle 0, 1 pour redessiner les graphiques dans matplotlib
  15. 预备知识-python核心用法常用数据分析库(上)
  16. 預備知識-python核心用法常用數據分析庫(上)
  17. 我在python上创建了个web静态服务器,把一个前端页面,放进去然后在静态服务器上访问只出现了前段页面的代码,代码运行正常,这是怎么回事
  18. Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅰ)
  19. 预备知识-python核心用法常用数据分析库(上)
  20. J'a i créé un serveur Web statique sur Python, j'ai mis une page frontale, j'ai accédé au Code sur le serveur statique qui n'avait que des pages frontales, et le Code fonctionnait correctement
  21. 预备知识-python核心用法常用数据分析库(下)
  22. python 文件排版,怎么控制写入在对应文件的位置(要写吐了,真是服了)
  23. Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅰ)
  24. Typographie de fichiers Python, comment contrôler l'écriture à l'emplacement du fichier correspondant (pour écrire et vomir, vraiment pris)
  25. python:例题求解,不知道怎么等输入完所有数字后再输出
  26. 用python来实现:根据实际查询结果补充完整数据
  27. Mise en œuvre en python: compléter les données complètes en fonction des résultats réels de la requête
  28. python对excel进行分组但不进行聚合统计操作,且输出到不同的表格中?
  29. Python regroupe Excel, mais n'effectue pas de statistiques agrégées, et l'affiche dans différents tableaux.
  30. python如何提交,不要用太复杂的函数
  31. Comment soumettre Python sans utiliser de fonctions trop complexes
  32. Python,数据文件操作问题,想要代码
  33. python 提取多个字符串中的多个字段
  34. python 读入用户输入的一组正整数,到-1结束
  35. Python lit un ensemble d'entiers positifs entrés par l'utilisateur, se terminant par - 1
  36. 测试逐飞的MM32F3277 MicroPython开发板的基本功能
  37. Python timer reference
  38. 关于#python#的问题:python3队列维护
  39. Developing Hongmeng equipment program using python (3-prototype of security system)
  40. Questions sur # # Python #: maintenance de la file d'attente Python 3
  41. 怎么用Python打印数字三角
  42. 怎麼用Python打印數字三角
  43. Comment imprimer un triangle numérique en python
  44. Tester la fonctionnalité de base du tableau de développement microspython mm32f3277 Flying - by - flying
  45. Python extrait plusieurs champs de plusieurs chaînes
  46. Pandas核心用法
  47. Utilisation centrale de pandas
  48. Python, problème de fonctionnement du fichier de données, Code désiré
  49. 【78技术人社群~Python分部】,就在今天成立 →
  50. 社区共读《Python编程从入门到实践》第一天阅读建议
  51. La communauté lit les recommandations de lecture pour la première journée de la programmation Python de l'introduction à la pratique
  52. [78 Communauté des technologues ~ Division Python], fondée aujourd'hui →
  53. Pandas核心用法
  54. 您好,请问您的python按钮开了线程处理还卡ui的问题解决了吗
  55. Python: résolution d'exemples, je ne sais pas comment attendre que tous les chiffres soient entrés avant de sortir
  56. Bonjour, puis - je vous demander si votre bouton Python est activé pour le traitement du thread et le retour de l'interface utilisateur de la carte a été résolu?
  57. Utilisation centrale de pandas
  58. Python technique 2: advanced usage of function parameters
  59. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  60. OpenCV-Python實戰(14)——人臉檢測詳解(僅需6行代碼學會4種人臉檢測方法)