当前位置: 代码迷 >> 综合 >> Datawhale -数据挖掘 - task 1 : 数据探索与分析
  详细解决方案

Datawhale -数据挖掘 - task 1 : 数据探索与分析

热度:52   发布时间:2023-12-08 17:13:39.0

前言

要求:数据切分方式 - 三七分,其中测试集30%,训练集70%,随机种子设置为2018

任务1:对数据进行探索和分析。时间:2天

数据类型的分析
无关特征删除
数据类型转换
缺失值处理

这里面数据集大家可以换成其他的,本文章代码依旧可以适用。

1、了解数据集

import pandas as pd
import numpy as npdataPath = "D:\\Data\\dataAnalyse\\"
dataFile = "data.csv"
data = pd.read_csv(dataPath+dataFile,encoding='gbk')print(data.shape)
#(4754, 90)
print(data.head(10))
data.info()
# 查看数据类型及对应类型个数
print(data.dtypes.value_counts())# 这个代码主要是为了计算每个特征的的每个值出现的次数
label = data.columns
#label = ['trade_no']
for col in label:print('{} 不同值个数:{}\r\n'.format(col,len(data[col].value_counts())))print(data[col].value_counts())

结果如下:

(4754, 90)
RangeIndex: 4754 entries, 0 to 4753
Data columns (total 90 columns):
Unnamed: 0                                    4754 non-null int64
custid                                        4754 non-null int64
trade_no                                      4754 non-null object
bank_card_no                                  4754 non-null object
low_volume_percent                            4752 non-null float64
middle_volume_percent                         4752 non-null float64
take_amount_in_later_12_month_highest         4754 non-null int64
trans_amount_increase_rate_lately             4751 non-null float64
trans_activity_month                          4752 non-null float64
trans_activity_day                            4752 non-null float64
transd_mcc                                    4752 non-null float64
trans_days_interval_filter                    4746 non-null float64
trans_days_interval                           4752 non-null float64
regional_mobility                             4752 non-null float64
student_feature                               1756 non-null float64
repayment_capability                          4754 non-null int64
is_high_user                                  4754 non-null int64
number_of_trans_from_2011                     4752 non-null float64
first_transaction_time                        4752 non-null float64
historical_trans_amount                       4754 non-null int64
historical_trans_day                          4752 non-null float64
rank_trad_1_month                             4752 non-null float64
trans_amount_3_month                          4754 non-null int64
avg_consume_less_12_valid_month               4752 non-null float64
abs                                           4754 non-null int64
top_trans_count_last_1_month                  4752 non-null float64
avg_price_last_12_month                       4754 non-null int64
avg_price_top_last_12_valid_month             4650 non-null float64
reg_preference_for_trad                       4752 non-null object
trans_top_time_last_1_month                   4746 non-null float64
trans_top_time_last_6_month                   4746 non-null float64
consume_top_time_last_1_month                 4746 non-null float64
consume_top_time_last_6_month                 4746 non-null float64
cross_consume_count_last_1_month              4328 non-null float64
trans_fail_top_count_enum_last_1_month        4738 non-null float64
trans_fail_top_count_enum_last_6_month        4738 non-null float64
trans_fail_top_count_enum_last_12_month       4738 non-null float64
consume_mini_time_last_1_month                4728 non-null float64
max_cumulative_consume_later_1_month          4754 non-null int64
max_consume_count_later_6_month               4746 non-null float64
railway_consume_count_last_12_month           4742 non-null float64
pawns_auctions_trusts_consume_last_1_month    4754 non-null int64
pawns_auctions_trusts_consume_last_6_month    4754 non-null int64
jewelry_consume_count_last_6_month            4742 non-null float64
status                                        4754 non-null int64
source                                        4754 non-null object
first_transaction_day                         4752 non-null float64
trans_day_last_12_month                       4752 non-null float64
id_name                                       4478 non-null object
apply_score                                   4450 non-null float64
apply_credibility                             4450 non-null float64
query_org_count                               4450 non-null float64
query_finance_count                           4450 non-null float64
query_cash_count                              4450 non-null float64
query_sum_count                               4450 non-null float64
latest_query_time                             4450 non-null object
latest_one_month_apply                        4450 non-null float64
latest_three_month_apply                      4450 non-null float64
latest_six_month_apply                        4450 non-null float64
loans_score                                   4457 non-null float64
loans_credibility_behavior                    4457 non-null float64
loans_count                                   4457 non-null float64
loans_settle_count                            4457 non-null float64
loans_overdue_count                           4457 non-null float64
loans_org_count_behavior                      4457 non-null float64
consfin_org_count_behavior                    4457 non-null float64
loans_cash_count                              4457 non-null float64
latest_one_month_loan                         4457 non-null float64
latest_three_month_loan                       4457 non-null float64
latest_six_month_loan                         4457 non-null float64
history_suc_fee                               4457 non-null float64
history_fail_fee                              4457 non-null float64
latest_one_month_suc                          4457 non-null float64
latest_one_month_fail                         4457 non-null float64
loans_long_time                               4457 non-null float64
loans_latest_time                             4457 non-null object
loans_credit_limit                            4457 non-null float64
loans_credibility_limit                       4457 non-null float64
loans_org_count_current                       4457 non-null float64
loans_product_count                           4457 non-null float64
loans_max_limit                               4457 non-null float64
loans_avg_limit                               4457 non-null float64
consfin_credit_limit                          4457 non-null float64
consfin_credibility                           4457 non-null float64
consfin_org_count_current                     4457 non-null float64
consfin_product_count                         4457 non-null float64
consfin_max_limit                             4457 non-null float64
consfin_avg_limit                             4457 non-null float64
latest_query_day                              4450 non-null float64
loans_latest_day                              4457 non-null float64
dtypes: float64(70), int64(13), object(7)
memory usage: 3.3+ MB
float64    70
int64      13
object      7
dtype: int64Unnamed: 0 不同值个数:4754custid 不同值个数:4754trade_no 不同值个数:4754bank_card_no 不同值个数:1low_volume_percent 不同值个数:40middle_volume_percent 不同值个数:90take_amount_in_later_12_month_highest 不同值个数:166trans_amount_increase_rate_lately 不同值个数:782trans_activity_month 不同值个数:84trans_activity_day 不同值个数:512transd_mcc 不同值个数:41trans_days_interval_filter 不同值个数:147trans_days_interval 不同值个数:114regional_mobility 不同值个数:5student_feature 不同值个数:2repayment_capability 不同值个数:2390is_high_user 不同值个数:2number_of_trans_from_2011 不同值个数:70first_transaction_time 不同值个数:1693historical_trans_amount 不同值个数:4524historical_trans_day 不同值个数:476rank_trad_1_month 不同值个数:20trans_amount_3_month 不同值个数:3524avg_consume_less_12_valid_month 不同值个数:12abs 不同值个数:1697top_trans_count_last_1_month 不同值个数:8avg_price_last_12_month 不同值个数:330avg_price_top_last_12_valid_month 不同值个数:20reg_preference_for_trad 不同值个数:5trans_top_time_last_1_month 不同值个数:28trans_top_time_last_6_month 不同值个数:97consume_top_time_last_1_month 不同值个数:28consume_top_time_last_6_month 不同值个数:94cross_consume_count_last_1_month 不同值个数:19trans_fail_top_count_enum_last_1_month 不同值个数:15trans_fail_top_count_enum_last_6_month 不同值个数:25trans_fail_top_count_enum_last_12_month 不同值个数:26consume_mini_time_last_1_month 不同值个数:1971max_cumulative_consume_later_1_month 不同值个数:863max_consume_count_later_6_month 不同值个数:29railway_consume_count_last_12_month 不同值个数:6pawns_auctions_trusts_consume_last_1_month 不同值个数:572pawns_auctions_trusts_consume_last_6_month 不同值个数:2730jewelry_consume_count_last_6_month 不同值个数:7status 不同值个数:2source 不同值个数:1first_transaction_day 不同值个数:1693trans_day_last_12_month 不同值个数:132id_name 不同值个数:4309apply_score 不同值个数:205apply_credibility 不同值个数:41query_org_count 不同值个数:46query_finance_count 不同值个数:25query_cash_count 不同值个数:17query_sum_count 不同值个数:74latest_query_time 不同值个数:207latest_one_month_apply 不同值个数:36latest_three_month_apply 不同值个数:56latest_six_month_apply 不同值个数:65loans_score 不同值个数:247loans_credibility_behavior 不同值个数:25loans_count 不同值个数:134loans_settle_count 不同值个数:123loans_overdue_count 不同值个数:26loans_org_count_behavior 不同值个数:41consfin_org_count_behavior 不同值个数:19loans_cash_count 不同值个数:32latest_one_month_loan 不同值个数:14latest_three_month_loan 不同值个数:31latest_six_month_loan 不同值个数:67history_suc_fee 不同值个数:171history_fail_fee 不同值个数:151latest_one_month_suc 不同值个数:19latest_one_month_fail 不同值个数:41loans_long_time 不同值个数:202loans_latest_time 不同值个数:232loans_credit_limit 不同值个数:54loans_credibility_limit 不同值个数:33loans_org_count_current 不同值个数:32loans_product_count 不同值个数:32loans_max_limit 不同值个数:91loans_avg_limit 不同值个数:961consfin_credit_limit 不同值个数:327consfin_credibility 不同值个数:24consfin_org_count_current 不同值个数:19consfin_product_count 不同值个数:20consfin_max_limit 不同值个数:175consfin_avg_limit 不同值个数:1677latest_query_day 不同值个数:210loans_latest_day 不同值个数:235

将城市 中文换成数字


reg_preference_for_trad = 'reg_preference_for_trad'
city_label = []
# 把 nan转换为 ""
for city in data[reg_preference_for_trad].fillna(""): if city not in city_label:city_label.append(city)print(city_label)
#print(data[reg_preference_for_trad].head(10))city_dic = {'一线城市':1, '二线城市':2, '三线城市':3, '境外':4, '其他城市':5, '':5}
city_num =[]
for city in data[reg_preference_for_trad].fillna(""): city_num.append(city_dic[city])print(city_num[0:20])# 新增一列
reg_preference_for_trad_num = reg_preference_for_trad+"_num"
data[reg_preference_for_trad_num] = city_numprint(data[reg_preference_for_trad_num].head(10))
print(data[reg_preference_for_trad_num].value_counts())

结果如下:

['一线城市', '三线城市', '境外', '二线城市', '其他城市', '']
[1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 1, 4, 1]
0    1
1    1
2    1
3    3
4    1
5    3
6    1
7    1
8    3
9    1
Name: reg_preference_for_trad_num, dtype: int64
1    3403
3    1064
4     150
2     131
5       6
Name: reg_preference_for_trad_num, dtype: int64

其中吧缺省值全部设置为了“”空字符,一方面是因为确实不好判断这个nan,所以转换后就很方便来判断缺省值,另一个方面就是利用词典来对数据数据,获得的新的一列,然后把新的一列插入到原数据结构中。

3、删除列

# 删除列
data = data.drop(['bank_card_no'],axis=1)data = data.drop(['Unnamed: 0'],axis=1)print('形状:',data.shape) 

结果:

形状:(4754, 89)

删除这两个,第一个是因为数值都是一样的,第二个是因为没有列名,应该是脏数据。

4、切割数据

from sklearn.model_selection import train_test_splittrain_data, test_data = train_test_split(data, test_size=0.3, random_state=2018)
print("train_data",train_data.shape)
print("test_data",test_data.shape)

结果如下:

train_data (3327, 91)
test_data (1427, 91)

其中:
test_size:样本占比,如果是整数的话就是样本的数量
random_state:是随机数的种子。

  相关解决方案