데이터 추출은 분석가가 일상 업무에서 자주 접하는 요구 사항입니다. 예를 들어 특정 사용자의 대출 금액, 특정 월 또는 분기의 총 이자 수입, 특정 기간의 대출 금액 및 건수, 5,000위안을 초과하는 대출 건수 등이 있습니다. 이 기사에서는 데이터 추출 요구 사항을 완료하기 위해 Python을 통해 특정 차원이나 조건에 따라 데이터를 추출하는 방법을 소개합니다.
준비 작업
첫 번째 단계는 준비 작업, 사용해야 하는 라이브러리를 가져오고 데이터 테이블을 읽고 생성하는 것입니다. 대출 데이터라는 이름이 붙었습니다.
아아앙색인 필드 설정
데이터 추출을 시작하기 전에 member_id
열을 인덱스 필드로 설정하세요. 그런 다음 데이터 추출을 시작합니다.
행별 정보 추출
첫 번째 단계는 사용자 정보 추출 등 행별 데이터 추출입니다. 다음은 ix 함수를 사용하여 member_id
이 1303503인 사용자 정보를 추출합니다.
열별 정보 추출
두 번째 단계는 열별 데이터 추출입니다. 예를 들어 사용자의 근로 연령 열의 모든 정보를 추출하면 다음은 전체 사용자의 근로 연령 정보를 표시하는 구체적인 코드와 추출 결과입니다.
아아앙행과 열로 정보 추출
세 번째 단계는 행과 열별로 정보를 추출하는 것입니다. 처음 두 부분의 쿼리 조건을 함께 넣어 특정 사용자의 특정 정보를 쿼리합니다. member_id
은 1303503입니다. emp_length
import numpy as np import pandas as pd loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
Loandata = loandata.set_index('member_id')
함수를 추가하여 결과를 합산하고, 동일한 쿼리를 특정 사용자 2명의 대출에 대한 대출 금액의 요약 값은 다음과 같은 결과로 직접 제공됩니다. sum
loandata.ix[1303503]
loandata.ix[:,'emp_length']
함수를 추가하여 합계 계산을 수행할 수도 있습니다. 이 사용자의 대출 금액과 연간 소득의 두 필드를 선택하고 결과를 표시합니다. sum
rreee
특정 날짜의 정보 추출
设置索引字段
首先将索引字段改为数据表中的日期字段,这里将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相关文章请关注PHP中文网!