Il suffit de 8 mouvements pour filtrer et interroger les données pandas

Appelez - moi frère. 2022-01-15 03:50:07 阅读数:119

il suffit mouvements pour filtrer

Bonjour tout le monde,C'est moi..

Parlez aujourd'huiPandasQuelques opérations de filtrage et d'interrogation des données,Les données sont généralement nettoyées et traitées au cours de l'analyse des données.,Les opérations les plus importantes et les plus courantes sont le filtrage et l'interrogation des données..

Table des matières:

1. Aperçu des données de cas

Cette affaire,Nous continuons avec ce que nous avons utiliséRégionsGDPDonnées,Les informations relatives aux données sont les suivantes:,Retour en arrière - planGDPOn peut l'avoir..

In [1]: import pandas as pd
In [2]: df = pd.read_excel(r'PIB par région.xlsx')
In [3]: df.head()
Out[3]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
3 Province du Shanxi 17651.9 16961.6 15958.1 14484.3 11946.4
4 Région autonome de Mongolie intérieure 17359.8 17212.5 16140.8 14898.1 13789.3
In [4]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 6 columns):
# Column Non-Null Count Dtype 
--- ------ -------------- -----
0 Régions 32 non-null object
1 2020Année 31 non-null float64
2 2019Année 31 non-null float64
3 2018Année 31 non-null float64
4 2017Année 31 non-null float64
5 2016Année 31 non-null float64
dtypes: float64(5), object(1)
memory usage: 1.6+ KB

Regardons les statistiques descriptives , Ensuite, faites une démonstration lors de la recherche de filtre suivante

In [5]: df.describe()
Out[5]:
2020Année 2019Année 2018Année 2017Année 2016Année
count 31.000000 31.000000 31.000000 31.000000 31.000000
mean 32658.551613 31687.758065 29487.661290 26841.819355 24224.148387
std 26661.811640 25848.652250 24136.181387 22161.575235 20008.278500
min 1902.700000 1697.800000 1548.400000 1349.000000 1173.000000
25% 13940.650000 13826.300000 13104.700000 12381.800000 11634.800000
50% 25115.000000 24667.300000 22716.500000 20210.800000 18388.600000
75% 42612.500000 41110.350000 37508.750000 33835.250000 30370.250000
max 110760.900000 107986.900000 99945.200000 91648.700000 82163.200000

Je vois., Les données valides sont 30Plusieurs, Pour que les données s'affichent un peu mieux , Nous pouvons définir un maximum d'affichage 6D'accord

In [6]: pd.set_option('display.max_rows', 6) #Afficher au plus6D'accord
In [7]: df
Out[7]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
.. ... ... ... ... ... ...
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
30 Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
31 Province de Taiwan NaN NaN NaN NaN NaN
[32 rows x 6 columns]

Et puis..., Commençons par démontrer le filtrage et la recherche des données

2. Opérations de base

En général, Il y a des lignes sélectionnées pour le filtrage des données 、 Valeur de la colonne ou de l'emplacement spécifié, etc.

2.1. Tranche[]

La découpe, c'est comme python Les opérations de tranchage des données de la liste pour

Sélectionner une colonne

Attention!: Si le nom de la colonne est 2020Année ou2020 Année, Ne peut pas prendre la forme d'un attribut , Parce que le nom de la variable pour cette opération Impossible de commencer par un nombre ou d'avoir des espaces

df['Régions'] # Forme de la tranche
Out[8]:
0 Pékin
1 Tianjin
2 Province de Hebei
29 Ningxia Hui Autonomous Region
30 Xinjiang Uygur Autonomous Region
31 Province de Taiwan
Name: Régions, Length: 32, dtype: object
In [9]: df.Régions # Formulaire d'attribut
Out[9]:
0 Pékin
1 Tianjin
2 Province de Hebei
...
29 Ningxia Hui Autonomous Region
30 Xinjiang Uygur Autonomous Region
31 Province de Taiwan
Name: Régions, Length: 32, dtype: object
In [10]: # Si le nom de la colonne est 2020Année ou2020 Année, Ne peut pas prendre la forme d'un attribut , Parce que le nom de la variable pour cette opération ne peut pas commencer par un nombre ou avoir un espace 
...: df.2020Année
File "C:\Users\Gdc\AppData\Local\Temp/ipykernel_6832/3948025585.py", line 2
df.2020Année
^
SyntaxError: invalid syntax

Opération de tranchage

  • La tranche est indexée , Le filtre correspond à la ligne
  • Encore une fois, si nous avons une liste de noms de colonnes dans la tranche , Ces colonnes peuvent être filtrées
  • Dans le cas d'une seule colonne ,Tranche[] Est la liste des noms de colonnes renvoie les types de résultats suivants: DataFrame,Au contraireSeries
In [11]: df[:2] # Les deux premières lignes de données 
Out[11]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
In [12]: df[6:8] # Index6-7 Données de ligne( Notez que l'index ici provient de 0Au début)
Out[12]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
6 Province de Jilin 12311.3 11726.8 11253.8 10922.0 10427.0
7 Province du Heilongjiang 13698.5 13544.4 12846.5 12313.0 11895.0
In [13]: df[:16:2] # Avant15D'accord Septum2Ligne
Out[13]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
4 Région autonome de Mongolie intérieure 17359.8 17212.5 16140.8 14898.1 13789.3
.. ... ... ... ... ... ...
10 Province du Zhejiang 64613.3 62462.0 58002.8 52403.1 47254.0
12 Province du Fujian 43903.9 42326.6 38687.8 33842.4 29609.4
14 Province du Shandong 73129.0 70540.5 66648.9 63012.1 58762.5
[8 rows x 6 columns]
In [14]: df[::-1] # Ordre inverse
Out[14]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
31 Province de Taiwan NaN NaN NaN NaN NaN
30 Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
.. ... ... ... ... ... ...
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
[32 rows x 6 columns]
In [15]: # Nous avons vu que c'était la position de l'index dans la tranche ci - dessus. , Le filtre correspond à la ligne ; Encore une fois, si nous avons une liste de noms de colonnes dans la tranche , Ces colonnes peuvent être filtrées 
...: df[['Régions','2016Année']]
Out[15]:
Régions 2016Année
0 Pékin 27041.2
1 Tianjin 11477.2
2 Province de Hebei 28474.1
.. ... ...
29 Ningxia Hui Autonomous Region 2781.4
30 Xinjiang Uygur Autonomous Region 9630.8
31 Province de Taiwan NaN
[32 rows x 2 columns]
In [16]: # Dans le cas d'une seule colonne , Les types de résultats retournés sous les deux formes suivantes sont: DataFrameEtSeries
...: df[['Régions']]
Out[16]:
Régions
0 Pékin
1 Tianjin
2 Province de Hebei
.. ...
29 Ningxia Hui Autonomous Region
30 Xinjiang Uygur Autonomous Region
31 Province de Taiwan
[32 rows x 1 columns]
In [17]: df['Régions']
Out[17]:
0 Pékin
1 Tianjin
2 Province de Hebei
...
29 Ningxia Hui Autonomous Region
30 Xinjiang Uygur Autonomous Region
31 Province de Taiwan
Name: Régions, Length: 32, dtype: object

2.2. Sélection de l'index.ilocAvec.loc

Il y a deux façons de filtrer par index ,ilocEtloc

  • df.iloc[Expression de ligne, Expression de la liste], Les deux expressions ne supportent que la forme de tranche numérique : Expression de ligne filtrer les lignes 、 Colonnes de filtre d'expression de liste
  • df.loc[Expression de ligne, Expression de la liste], Deux expressions sont en fait un choix de noms d'index de ligne et de colonne : Expression de ligne filtrer les lignes 、 Colonnes de filtre d'expression de liste

Bien sûr., Les expressions pour les deux méthodes de filtrage supportent également les conditions

iloc[]

Vous pouvez le distinguer par le nom de la méthode pour l'emplacement de l'index naturel Toujours Nom de l'index,Par exemple,ilocPlusieursiOui.,i C'est le code numérique ,Alors... Il s'agit de l'emplacement de l'index naturel

In [18]: df.iloc[0] # Retour ouiSeries,0 Est l'emplacement de l'index naturel 
Out[18]:
Régions Pékin
2020Année 36102.6
2019Année 35445.1
2018Année 33106.0
2017Année 29883.0
2016Année 27041.2
Name: 0, dtype: object
In [19]: df.iloc[[0]] # Le retour est une ligne ,0 Est l'emplacement de l'index naturel 
Out[19]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
In [20]: df.iloc[:2] # Les deux premières lignes de données 
Out[20]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
In [21]: df.iloc[:2,[0,1,3]] # Les deux premières lignes,No0-1-3Données de colonne
Out[21]:
Régions 2020Année 2018Année
0 Pékin 36102.6 33106.0
1 Tianjin 14083.7 13362.9
In [22]: df.iloc[1,1] # L'indice naturel est 1,No1Données de la colonne( C'est Tianjin 2020Annéegdp),Usage général .iat
Out[22]: 14083.7

loc[]

Différent deiloc, Il filtre par le nom de l'index , S'il n'y a pas d'index, il s'agit généralement d'un index naturel.

In [23]: df1 = df.set_index('Régions') # Nous définissons Champs régionaux Colonnes Pour l'index
In [24]: df1
Out[24]:
2020Année 2019Année 2018Année 2017Année 2016Année
Régions
Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
... ... ... ... ... ...
Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
Province de Taiwan NaN NaN NaN NaN NaN
[32 rows x 5 columns]
In [25]: df1.loc['Pékin'] # Sélectionner Index Data named Beijing 
Out[25]:
2020Année 36102.6
2019Année 35445.1
2018Année 33106.0
2017Année 29883.0
2016Année 27041.2
Name: Pékin, dtype: float64
In [26]: df1.loc['Pékin':'Province de Hebei','2020Année'] # Sélectionner Nom de l'index À Pékin, dans la province de Hebei ,Nom de la colonne: 2020Données annuelles
Out[26]:
Régions
Pékin 36102.6
Tianjin 14083.7
Province de Hebei 36206.9
Name: 2020Année, dtype: float64
In [27]: df1.loc['Pékin':'Province de Hebei','2019Année':] # Sélectionner Nom de l'index À Pékin, dans la province de Hebei , Nom de la colonne dans 2019 Données annuelles et suivantes 
Out[27]:
2019Année 2018Année 2017Année 2016Année
Régions
Pékin 35445.1 33106.0 29883.0 27041.2
Tianjin 14055.5 13362.9 12450.6 11477.2
Province de Hebei 34978.6 32494.6 30640.8 28474.1
In [28]: df1.loc[['Pékin','Shanghai','Chongqing','Tianjin'],['2020Année','2019Année']] # Sélectionnez le nom de l'index Beijing、Shanghai、Chongqing、Tianjin 2020Année et2019Données annuelles
Out[28]:
2020Année 2019Année
Régions
Pékin 36102.6 35445.1
Shanghai 38700.6 37987.6
Chongqing 25002.8 23605.8
Tianjin 14083.7 14055.5
In [29]: df1.loc['Pékin','2020Année'] # Sélectionner Le nom de l'index est Pékin,Nom de la colonne:2020Année Données quantitatives ( C'est la valeur de l'élément de coordonnées )
Out[29]: 36102.6

2.3. Sélection des éléments.iatAvec.at

Les coordonnées peuvent en fait être obtenues par l'index ci - dessus ,Ça marche encore ici.iatEt.atPour réaliser, Et par type d'index un est une valeur d'index naturelle et un est un nom d'index

In [30]: df.iat[0,2]
Out[30]: 35445.1
In [31]: df1.at['Pékin','2019Année']
Out[31]: 35445.1
In [32]: df.Régions.at[3]
Out[32]: 'Province du Shanxi'
In [33]: # En fait, il y a d'autres façons 
...: df1['2019Année']['Pékin']
Out[33]: 35445.1
In [34]: df['2019Année'][0]
Out[34]: 35445.1

2.4. getAvectruncate

df.get(key, default=None)SimilairepythonDictionnaireÀ l'intérieur.getMéthodes

df.truncate(before=None, after=None, axis=None, copy: 'bool_t' = True), Renvoie les données d'intervalle

get()

PourDataFrame Les données sont retournées keyValeur de la colonne,Sikey Renvoie la valeur par défaut si elle n'existe pas .

Signature: df.get(key, default=None)
Docstring:
Get item from object for given key (ex: DataFrame column).
Returns default value if not found.

PourSeriesEn termes de données,RetourkeyValeur de l'index, Renvoie la valeur par défaut si elle n'existe pas .

In [35]: df.get('Régions','Aucune donnée disponible')
Out[35]:
0 Pékin
1 Tianjin
2 Province de Hebei
...
29 Ningxia Hui Autonomous Region
30 Xinjiang Uygur Autonomous Region
31 Province de Taiwan
Name: Régions, Length: 32, dtype: object
In [36]: df.get('2015Année','Aucune donnée disponible')
Out[36]: 'Aucune donnée disponible'
In [37]: df.Régions.get(0,'Aucune donnée disponible')
Out[37]: 'Pékin'
In [38]: df.Régions.get(100,'Aucune donnée disponible')
Out[38]: 'Aucune donnée disponible'

truncate()

Remplacer l'index par beforeEtafter, Interceptez les données de cet intervalle , Prise en charge des opérations de ligne et de colonne

In [39]: df.truncate(before=0,after=4)
Out[39]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
3 Province du Shanxi 17651.9 16961.6 15958.1 14484.3 11946.4
4 Région autonome de Mongolie intérieure 17359.8 17212.5 16140.8 14898.1 13789.3
In [40]: df.truncate(before='2018Année',after='2020Année',axis=1)
Out[40]:
2020Année 2019Année 2018Année
0 36102.6 35445.1 33106.0
1 14083.7 14055.5 13362.9
2 36206.9 34978.6 32494.6
.. ... ... ...
29 3920.5 3748.5 3510.2
30 13797.6 13597.1 12809.4
31 NaN NaN NaN
[32 rows x 3 columns]

Les opérations ci - dessus sont des opérations de base pour le filtrage et la requête des données. , Ensuite, nous examinons les opérations avancées

3. Opérations avancées

Dans la Section opérations de base, nous présentons une opération de filtrage des données relativement simple. , Lors du nettoyage et du traitement réels des données, nous avons besoin de filtrer les données en fonction de conditions combinées plus complexes. .Cette section, Je vais vous présenter un par un. .

3.1. Filtrage logique

La sélection logique se réfère ici au filtrage des données selon certaines conditions logiques. ,Par exemple, Une ligne qui répond à une condition 、Données de colonneAttendez un peu!

In [41]: df[df['Régions'] == 'Pékin'] # La région est les données de la ville de Pékin 
Out[41]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
In [42]: df[df['Régions'].str.contains('Ville')] # Nom de la région Avec mots clés Ville Données 
Out[42]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
8 Shanghai 38700.6 37987.6 36011.8 32925.0 29887.0
21 Chongqing 25002.8 23605.8 21588.8 20066.3 18023.0
In [43]: df[df['Régions'].str.contains('Ville|Région autonome')] # Le nom de la région contient des mots clés Une municipalité ou une région autonome Données
Out[43]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
4 Région autonome de Mongolie intérieure 17359.8 17212.5 16140.8 14898.1 13789.3
.. ... ... ... ... ... ...
25 Région autonome du Tibet 1902.7 1697.8 1548.4 1349.0 1173.0
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
30 Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
[9 rows x 6 columns]
In [44]: df[df['Régions'].isin(['Pékin','Province de Hubei','Province du Jiangsu'])] # Nom de la région À Pékin、Province de Hubei、 Données de la province de Jiangsu 
Out[44]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
9 Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9
16 Province de Hubei 43443.5 45429.0 42022.0 37235.0 33353.0
In [45]: df[~df['Régions'].isin(['Pékin','Province de Hubei','Province du Jiangsu'])] # Nom de la région Pas à Pékin 、Province de Hubei、 Données de la province de Jiangsu 
Out[45]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
3 Province du Shanxi 17651.9 16961.6 15958.1 14484.3 11946.4
.. ... ... ... ... ... ...
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
30 Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
31 Province de Taiwan NaN NaN NaN NaN NaN
[29 rows x 6 columns]

Sauf pour la tranche supérieure []Forme,Ça marche aussi.loc[]Forme

In [46]: df.loc[df['Régions'].isin(['Pékin','Province de Hubei','Province du Jiangsu'])]
Out[46]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
9 Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9
16 Province de Hubei 43443.5 45429.0 42022.0 37235.0 33353.0

Pouriloc[]Dis, Doit être un jugement sur la valeur de l'indice naturel

In [47]: df.iloc[df.index==9]
Out[47]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
9 Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9

Nous pouvons également faire des jugements logiques plus complexes pour filtrer les données désirées ,En cours Ou(|) Et(&) Non(~) Quand la logique juge , Chaque jugement logique indépendant doit être entre parenthèses

In [48]: df[df['2020Année']<df['2019Année']] # 2020AnnéeGDPMoins de2019AnnéeGDPProvinces
Out[48]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
16 Province de Hubei 43443.5 45429.0 42022.0 37235.0 33353.0
In [49]: df[(df['2020Année']>30000) &
...: (df['2019Année']>30000)
...: ] # Suite récente 2AnnéeGDPPlus que3 Des trillions de régions 
Out[49]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
8 Shanghai 38700.6 37987.6 36011.8 32925.0 29887.0
.. ... ... ... ... ... ...
17 Province de Hunan 41781.5 39894.1 36329.7 33828.1 30853.5
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2
22 Province du Sichuan 48598.8 46363.8 42902.1 37905.1 33138.5
[13 rows x 6 columns]

On peut encore passer paranyEtall Juger à nouveau le résultat après le jugement logique ,Pourall Pour répondre à tous les besoins ,Pourany Il n'y en a qu'un. , Notez que la valeur par défaut est 0Direction des colonnes,1 C'est la direction de la ligne

In [50]: df[(df[['2020Année','2019Année']]>30000).all(1)] # Suite récente 2AnnéeGDPPlus que3 Des trillions de régions 
Out[50]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
8 Shanghai 38700.6 37987.6 36011.8 32925.0 29887.0
.. ... ... ... ... ... ...
17 Province de Hunan 41781.5 39894.1 36329.7 33828.1 30853.5
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2
22 Province du Sichuan 48598.8 46363.8 42902.1 37905.1 33138.5
[13 rows x 6 columns]
In [51]: df[(df[['2020Année','2019Année']]>100000).all(1)] # Récemment2Il y a1AnnéeGDPPlus que10Trillions
Out[51]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2

3.2. Filtrage des fonctions

Filtre de fonction signifie Nous sommes dans une sélection de tranches ou d'index , L'expression peut aussi être lambdaFonctions;En outre,pandasIl y en a aussiFonction de comparaison Peut être utilisé pour filtrer les données .

PersonnalisationlambdaFonctions

df.loc[lambda x : x['2020Année']>50000, ['Régions','2020Année','2019Année']] # Filtrage2020AnnéeGDPPlus que5 Billions de dollars et seulement Régions、2020Année et2019Données annuelles
Out[53]:
Régions 2020Année 2019Année
9 Province du Jiangsu 102719.0 98656.8
10 Province du Zhejiang 64613.3 62462.0
14 Province du Shandong 73129.0 70540.5
15 Province de Henan 54997.1 53717.8
18 Province de Guangdong 110760.9 107986.9
In [54]: import re
In [55]: df.loc[:, lambda x : [i for i in df.columns[1:] if int(re.findall('\d+',i)[0])<2020]] # Filtrer les colonnes dont le nom de colonne satisfait aux critères 
Out[55]:
2019Année 2018Année 2017Année 2016Année
0 35445.1 33106.0 29883.0 27041.2
1 14055.5 13362.9 12450.6 11477.2
2 34978.6 32494.6 30640.8 28474.1
.. ... ... ... ...
29 3748.5 3510.2 3200.3 2781.4
30 13597.1 12809.4 11159.9 9630.8
31 NaN NaN NaN NaN
[32 rows x 4 columns]

Fonction de comparaison

panda Il y a des fonctions de comparaison , Nous pouvons remplacer les expressions logiques par des fonctions de comparaison

In [56]: df[df['Régions'].eq('Pékin')] # égal à
Out[56]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
In [57]: df[df['Régions'].ne('Pékin')] # Pas égal à
Out[57]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
1 Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
3 Province du Shanxi 17651.9 16961.6 15958.1 14484.3 11946.4
.. ... ... ... ... ... ...
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
30 Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
31 Province de Taiwan NaN NaN NaN NaN NaN
[31 rows x 6 columns]
In [58]: df[df['2020Année'].lt(10000)] # Moins de
Out[58]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
20 Province de Hainan 5532.4 5330.8 4910.7 4497.5 4090.2
25 Région autonome du Tibet 1902.7 1697.8 1548.4 1349.0 1173.0
27 Province de Gansu 9016.7 8718.3 8104.1 7336.7 6907.9
28 Province du Qinghai 3005.9 2941.1 2748.0 2465.1 2258.2
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
In [59]: df[df['2020Année'].le(5532.4)] # Jusqu'à
Out[59]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
20 Province de Hainan 5532.4 5330.8 4910.7 4497.5 4090.2
25 Région autonome du Tibet 1902.7 1697.8 1548.4 1349.0 1173.0
28 Province du Qinghai 3005.9 2941.1 2748.0 2465.1 2258.2
29 Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
In [60]: df[df['2020Année'].gt(50000)] # Plus grand que
Out[60]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
9 Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9
10 Province du Zhejiang 64613.3 62462.0 58002.8 52403.1 47254.0
14 Province du Shandong 73129.0 70540.5 66648.9 63012.1 58762.5
15 Province de Henan 54997.1 53717.8 49935.9 44824.9 40249.3
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2
In [61]: df[df['2020Année'].ge(62462.0)] # Supérieur ou égal à
Out[61]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
9 Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9
10 Province du Zhejiang 64613.3 62462.0 58002.8 52403.1 47254.0
14 Province du Shandong 73129.0 70540.5 66648.9 63012.1 58762.5
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2

Pourisin(), Vous pouvez également passer dans le Dictionnaire ,keyPour le nom de colonne,value Pour la valeur à correspondre ( Vous pouvez essayer de construire des données. )

3.3. query

Signature: df.query(expr: 'str', inplace: 'bool' = False, **kwargs)
Docstring:
Query the columns of a DataFrame with a boolean expression.

query() C'est une méthode de recherche universitaire , Son expression est une chaîne ,On est là.《》Je t'ai présenté, Tout le monde peut aller voir , Voici une brève introduction

  • Dans les guillemets , Si le nom de la colonne commence par un nombre ou contient des espaces ,Il faut` Anti - citation id
  • Dans d'autres cas, le nom de colonne peut être écrit directement. , L'objet utilisé pour filtrer la comparaison nécessite des guillemets s'il s'agit d'une chaîne
  • On peut encore passer par@ Pour introduire des variables
In [62]: df.query('Régions=="Pékin"') # Données régionales pour la ville de Pékin 
Out[62]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
In [63]: df.query('`2020Année`<`2019Année`') # 2020AnnéeGDPMoins de2019AnnéeGDPDonnées
Out[63]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
16 Province de Hubei 43443.5 45429.0 42022.0 37235.0 33353.0
In [64]: mean_gdp = df['2020Année'].mean()
In [64]: mean_gdp
Out[65]: 32658.55161290323
In [66]: df.query('`2020Année` > @mean_gdp') # @ Introduction de variables
Out[66]:
Régions 2020Année 2019Année 2018Année 2017Année 2016Année
0 Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
2 Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
8 Shanghai 38700.6 37987.6 36011.8 32925.0 29887.0
.. ... ... ... ... ... ...
17 Province de Hunan 41781.5 39894.1 36329.7 33828.1 30853.5
18 Province de Guangdong 110760.9 107986.9 99945.2 91648.7 82163.2
22 Province du Sichuan 48598.8 46363.8 42902.1 37905.1 33138.5
[13 rows x 6 columns]

3.4. filter

Signature:
df.filter(
items=None,
like: 'str | None' = None,
regex: 'str | None' = None,
axis=None,
) -> 'FrameOrSeries'
Docstring:
Subset the dataframe rows or columns according to the specified index labels.
Note that this routine does not filter a dataframe on its
contents. The filter is applied to the labels of the index.

df.filter() Les lignes et les noms de colonnes peuvent être filtrés , Prise en charge des correspondances floues et des expressions régulières

In [67]: df.filter(items=['2020Année','2016Année']) # Sélectionnez deux colonnes 
Out[67]:
2020Année 2016Année
0 36102.6 27041.2
1 14083.7 11477.2
2 36206.9 28474.1
.. ... ...
29 3920.5 2781.4
30 13797.6 9630.8
31 NaN NaN
[32 rows x 2 columns]
In [68]: df.filter(regex='Année') # Le nom de la colonne contient Année Colonne
Out[68]:
2020Année 2019Année 2018Année 2017Année 2016Année
0 36102.6 35445.1 33106.0 29883.0 27041.2
1 14083.7 14055.5 13362.9 12450.6 11477.2
2 36206.9 34978.6 32494.6 30640.8 28474.1
.. ... ... ... ... ...
29 3920.5 3748.5 3510.2 3200.3 2781.4
30 13797.6 13597.1 12809.4 11159.9 9630.8
31 NaN NaN NaN NaN NaN
[32 rows x 5 columns]
In [69]: df1.filter(regex='Ville', axis=0) # Le nom de l'index contient Ville Données
Out[69]:
2020Année 2019Année 2018Année 2017Année 2016Année
Régions
Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
Tianjin 14083.7 14055.5 13362.9 12450.6 11477.2
Shanghai 38700.6 37987.6 36011.8 32925.0 29887.0
Chongqing 25002.8 23605.8 21588.8 20066.3 18023.0
In [70]: df1.filter(regex='^Jiang', axis=0) # Le nom de l'index commence par la rivière 
Out[70]:
2020Année 2019Année 2018Année 2017Année 2016Année
Régions
Province du Jiangsu 102719.0 98656.8 93207.6 85869.8 77350.9
Province du Jiangxi 25691.5 24667.3 22716.5 20210.8 18388.6
In [71]: df1.filter(regex='Région autonome$', axis=0) # Se terminant par une communauté autonome dans un nom d'index 
Out[71]:
2020Année 2019Année 2018Année 2017Année 2016Année
Régions
Région autonome de Mongolie intérieure 17359.8 17212.5 16140.8 14898.1 13789.3
Guangxi Zhuang Autonomous Region 22156.7 21237.1 19627.8 17790.7 16116.6
Région autonome du Tibet 1902.7 1697.8 1548.4 1349.0 1173.0
Ningxia Hui Autonomous Region 3920.5 3748.5 3510.2 3200.3 2781.4
Xinjiang Uygur Autonomous Region 13797.6 13597.1 12809.4 11159.9 9630.8
In [72]: df1.filter(like='Nord',axis=0) # Il y a Nord De
Out[72]:
2020Année 2019Année 2018Année 2017Année 2016Année
Régions
Pékin 36102.6 35445.1 33106.0 29883.0 27041.2
Province de Hebei 36206.9 34978.6 32494.6 30640.8 28474.1
Province de Hubei 43443.5 45429.0 42022.0 37235.0 33353.0

C'est tout ce qui précède,J'espère que ça t'aidera., J'espère que ça te plaira. 、 Un petit coup de pouce !

Allez~

版权声明:本文为[Appelez - moi frère.]所创,转载请带上原文链接,感谢。 https://pythonmana.com/2022/01/202201080611484744.html