Heim >Backend-Entwicklung >Python-Tutorial >Python zur Datenextraktion
Datenextraktion ist eine Anforderung, mit der Analysten in ihrer täglichen Arbeit häufig konfrontiert werden. Zum Beispiel der Kreditbetrag eines bestimmten Benutzers, der Gesamtzinsertrag in einem bestimmten Monat oder Quartal, der Betrag und die Anzahl der Kredite in einem bestimmten Zeitraum, die Anzahl der Kredite über 5.000 Yuan usw. In diesem Artikel wird erläutert, wie Daten mithilfe von Python gemäß bestimmten Dimensionen oder Bedingungen extrahiert werden, um die Anforderungen an die Datenextraktion zu erfüllen.
Vorbereitungsarbeiten
Der erste Schritt ist die Vorbereitungsarbeit, das Importieren der Bibliotheken, die Sie verwenden müssen, das Lesen und Erstellen einer Datentabelle mit dem Namen „loandata“.
import numpy as np import pandas as pd loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
Indexfeld festlegen
Bevor Sie mit der Datenextraktion beginnen, legen Sie die Spalte member_id
als Indexfeld fest. Beginnen Sie dann mit der Datenextraktion.
Loandata = loandata.set_index('member_id')
Informationen zeilenweise extrahieren
Der erste Schritt besteht darin, Daten zeilenweise zu extrahieren, beispielsweise die Informationen eines Benutzers. Im Folgenden wird die ix-Funktion verwendet, um Benutzerinformationen zu extrahieren, wobei member_id
1303503 ist.
loandata.ix[1303503]
Informationen nach Spalten extrahieren
Der zweite Schritt besteht darin, Daten nach Spalten zu extrahieren, beispielsweise alle Informationen in der Spalte „Erwerbsalter“ des Benutzers zu extrahieren. Im Folgenden finden Sie den spezifischen Code und die Extraktionsergebnisse, die die Informationen zum erwerbsfähigen Alter aller Benutzer anzeigen.
loandata.ix[:,'emp_length']
Informationen nach Zeilen und Spalten extrahieren
Der dritte Schritt besteht darin, Informationen nach Zeilen und Spalten zu extrahieren. Fügen Sie die Abfragebedingungen in den vorherigen beiden Teilen zusammen, um spezifische Informationen eines bestimmten Benutzers abzufragen 1303503member_id
Informationen. emp_length
loandata.ix[1303503,'emp_length']Fügen Sie weiterhin Bedingungen basierend auf den vorherigen hinzu und fügen Sie eine Zeile hinzu, um gleichzeitig die Kreditbeträge abzufragen von zwei spezifischen Benutzerinformationen. Die spezifischen Code- und Abfrageergebnisse lauten wie folgt. Die Codebeträge für beide Benutzer werden in den Ergebnissen separat aufgeführt.
loandata.ix[[1303503,1298717],'loan_amnt']Fügen Sie die Funktion
nach dem vorherigen Code hinzu, um die Ergebnisse zu summieren. Das Gleiche Die Abfrage wird für die Kredite zweier bestimmter Benutzer durchgeführt. Der Gesamtwert des Kreditbetrags wird in den folgenden Ergebnissen direkt angezeigt. sum
loandata.ix[[1303503,1298717],'loan_amnt'].sum()Zusätzlich zum Hinzufügen von Zeilenabfragebedingungen können Sie auch Spaltenabfragebedingungen hinzufügen, z folgt Der Code fragt den Kreditbetrag und das Jahreseinkommen eines bestimmten Benutzers ab und zeigt jeweils die Ergebnisse dieser beiden Felder an.
loandata.ix[1303503,['loan_amnt','annual_inc']]Die Abfrage mehrerer Spalten kann auch eine Summenberechnung durchführen. Fügen Sie Funktion, Summieren Sie die beiden Felder Kreditbetrag und Jahreseinkommen dieses Benutzers und zeigen Sie das Ergebnis an.
sum
loandata.ix[1303503,['loan_amnt','annual_inc']].sum()
Informationen für ein bestimmtes Datum extrahieren
Eine weitere sehr häufige Anforderung bei der Datenextraktion besteht darin, Daten nach Datumsdimension zusammenzufassen und zu extrahieren, z. B. monatliche und vierteljährliche zusammenfassende Datenextraktion und Datenextraktion nach bestimmten Zeiträumen usw.
设置索引字段
首先将索引字段改为数据表中的日期字段,这里将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 zur Datenextraktion相关文章请关注PHP中文网!