L'extraction de données est une exigence à laquelle les analystes sont souvent confrontés dans leur travail quotidien. Par exemple, le montant du prêt d'un certain utilisateur, le revenu total d'intérêts au cours d'un certain mois ou trimestre, le montant et le nombre de prêts au cours d'une certaine période, le nombre de prêts supérieurs à 5 000 yuans, etc. Cet article explique comment extraire des données en fonction de dimensions ou de conditions spécifiques via Python pour répondre aux exigences d'extraction de données.
Travail de préparation
La première étape est un travail de préparation, importez les bibliothèques dont vous avez besoin, lisez et créez un tableau de données nommé prêtdonnées.
import numpy as np import pandas as pd loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
Définir le champ d'index
Avant de commencer à extraire des données, définissez la colonne member_id
comme champ d'index. Commencez ensuite à extraire les données.
Loandata = loandata.set_index('member_id')
Extraire les informations par ligne
La première étape consiste à extraire les données par ligne, comme extraire les informations d'un utilisateur. Ce qui suit utilise la fonction ix pour extraire les informations utilisateur où member_id
est 1303503.
loandata.ix[1303503]
Extraire les informations par colonnes
La deuxième étape consiste à extraire les données par colonne, par exemple, extraire toutes les informations de la colonne d'âge de travail de l'utilisateur. Voici le code spécifique et les résultats de l'extraction, qui affichent les informations sur l'âge de travail de tous les utilisateurs.
loandata.ix[:,'emp_length']
Extraire les informations par lignes et colonnes
La troisième étape consiste à extraire les informations par lignes et colonnes. Rassemblez les conditions de requête des deux parties précédentes pour interroger les informations spécifiques d'un utilisateur spécifique. Ce qui suit consiste à interroger l'utilisateur dont member_id
est. 1303503emp_length
informations.
loandata.ix[1303503,'emp_length']
Continuez à ajouter des conditions basées sur la précédente, et ajoutez une ligne pour interroger simultanément le montant du prêt de deux informations spécifiques aux utilisateurs. Le code spécifique et les résultats de la requête sont les suivants. Les montants de code pour les deux utilisateurs sont répertoriés séparément dans les résultats.
loandata.ix[[1303503,1298717],'loan_amnt']
Ajouter la fonction sum
après le code précédent pour additionner les résultats, Le même la requête est effectuée pour les prêts de deux utilisateurs spécifiques. La valeur récapitulative du montant du prêt est directement donnée dans les résultats suivants.
loandata.ix[[1303503,1298717],'loan_amnt'].sum()
En plus d'ajouter des conditions de requête de ligne, vous pouvez également ajouter des conditions de requête de colonne, comme suit Le code interroge le montant du prêt et le revenu annuel d'un utilisateur spécifique, et les résultats de ces deux champs sont affichés respectivement.
loandata.ix[1303503,['loan_amnt','annual_inc']]
La requête de plusieurs colonnes peut également effectuer un calcul de somme, ajouter <🎜 après le code précédent >Fonction, additionnez les deux champs du montant du prêt et du revenu annuel de cet utilisateur, et affichez le résultat. sum
loandata.ix[1303503,['loan_amnt','annual_inc']].sum()
Extraire des informations pour une date précise
设置索引字段
首先将索引字段改为数据表中的日期字段,这里将issue_d设置为数据表的索引字段。按日期进行查询和数据提取。
loandata = loandata.set_index('issue_d')
按日期提取信息
下面的代码查询了所有2016年的数据。
loandata['2016']
在前面代码的基础上增加月份,查询所有2016年3月的数据。
loandata['2016-03']
继续在前面代码的基础上增加日期,查询所有2016年6月16日的数据。
loandata['2016-06-16']
除了按单独日期查询以外,还可以按日期段进行数据查询,下面的代码中查询了所有2016年1月至5月的数据。下面显示了具体的查询结果,可以发现数据的日期都是在1-5月的,但是按日期维度显示的,这就需要我们对数据按月进行汇总。
loandata['2016-01':'2016-05']
按日期汇总信息
Pandas中的resample
函数可以完成日期的聚合工作,包括按小时维度,日期维度,月维度,季度及年的维度等等。下面我们分别说明。首先是按周的维度对前面数据表的数据进行求和。下面的代码中W表示聚合方式是按周,how表示数据的计算方式,默认是计算平均值,这里设置为sum
,进行求和计算。
loandata.resample('W',how=sum).head(10)
将W改为M,数据变成了按月聚合的方式。计算方式依然是求和。这里需要说明的是resample
函数会显示出所有连续的时间段,例如前面按周的聚合操作会显示连续的周日期,这里的按月操作则会在结果中显示连续的月,如果某个时间段没有数据,会以NaN值显示。
loandata.resample('M',how=sum)
将前面代码中的M改为Q,则为按季度对数据进行聚合,计算方式依然为求和。从下面的数据表中看,日期显示的都是每个季度的最后一天,如果希望以每个季度的第一天显示,可以改为QS。
loandata.resample('Q',how=sum)
将前面代码中的Q改为A,就是按年对数据进行聚合,计算方式依然为求和。
loandata.resample('A',how=sum)
前面的方法都是对整个数据表进行聚合和求和操作,如果只需要对某一个字段的值进行聚合和求和,可以在数据表后增加列的名称。下面是将贷款金额字段按月聚合后求和,并用0填充空值。
loandata['loan_amnt'].resample('M',how=sum).fillna(0)
在前面代码的基础上再增加一个数值字段,并且在后面的计算方式中增加len
用来计数。在下面的结果中分别对贷款金额和利息收入按月聚合,并进行求和和计数计算
loandata[['loan_amnt','total_rec_int']].resample('M',how=[len,sum])
有时我们需要只对某一时间段的数据进行聚合和计算,下面的代码中对2016年1月至5月的数据按月进行了聚合,并计算求和。用0填充空值。
loandata['2016-01':'2016-05'].resample('M',how=sum).fillna(0)
或者只对某些符合条件的数据进行聚合和计算。下面的代码中对于贷款金额大于5000的按月进行聚合,并计算求和。空值以0进行填充。
loandata[loandata['loan_amnt']>5000].resample('M',how=sum).fillna(0)
除了按周,月,季度和年以外,resample
函数还可以按以下方式对日期进行聚合。
下面给出了具体的对应表和说明。
更多Python pour lextraction de données相关文章请关注PHP中文网!