首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python根据一列将整个数据集划分为4个范围

如何使用python根据一列将整个数据集划分为4个范围
EN

Stack Overflow用户
提问于 2018-03-20 05:16:24
回答 3查看 1K关注 0票数 0

我有一个带有7k records [telecom dataset]的数据集。

我想根据一个特定的列["tenure column"]将该数据集分割成4个范围,其中包含1到72个数字。

需要根据这个任期列来分割整个数据,例如:-

1至18范围1-数据集,19至36范围2-数据集,37至54范围3-数据集,55至72范围4-数据集

我的带头的样本集(5)

代码语言:javascript
复制
out.head(5)
Out[51]: 
   customerID      Date  gender  age  region  SeniorCitizen  Partner  \
0  9796-BPKIW  1/2/2008       1   57       1              1        0   
1  4298-OYIFC  1/4/2008       1   50       2              0        1   
2  9606-PBKBQ  1/6/2008       1   85       0              1        1   
3  1704-NRWYE  1/9/2008       0   55       0              1        0   
4  9758-MFWGD  1/6/2008       0   52       1              1        1   

   Dependents  tenure  PhoneService  ...    DeviceProtection  TechSupport  \
0           0       8             1  ...                   0            0   
1           0      15             1  ...                   1            1   
2           0      32             1  ...                   0            0   
3           0       9             1  ...                   0            0   
4           1      48             0  ...                   0            0   

   StreamingTV  StreamingMovies  Contract  PaperlessBilling  PaymentMethod  \
0            0                0         0                 1              1   
1            1                1         0                 1              2   
2            0                1         0                 1              2   
3            1                0         0                 1              2   
4            0                0         1                 0              0   

   MonthlyCharges  TotalCharges  Churn  
0           69.95        562.70      0  
1          103.45       1539.80      0  
2           85.00       2642.05      1  
3           80.85        751.65      1  
4           29.90       1388.75      0  
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-20 05:36:20

用熊猫来做这件事很容易。

代码语言:javascript
复制
import pandas as pd

df = pd.read_csv('your_dataset_file.csv', sep=',', header=0)
# Sort it according to tenure
df.sort_values(by=['tenure'], inplace=True)
# Create bin edges 
step_size = int(df.tenure.max()/4)
bin_edges = list(range(0,df.tenure.max()+step_size, step_size))
lbls = ['a','b','c','d']
df['bin'] = pd.cut(df.tenure,bin_edges, labels= lbls)
# Create separate dataframes from it
df1 = df[df.bin == 'a']
df2 = df[df.bin == 'b']
df3 = df[df.bin == 'c']
df4 = df[df.bin == 'd']
票数 1
EN

Stack Overflow用户

发布于 2018-03-20 06:04:55

我将创建数据集列表。

代码语言:javascript
复制
dflist = [df[df["tenure column"].isin(range(i*18 + 1,(i+1)*18+1))] for i in range(4)] 
票数 1
EN

Stack Overflow用户

发布于 2018-03-20 05:25:23

易于理解的代码

代码语言:javascript
复制
i = 1
m = 0
out["tenure column"] = out["tenure column"].astype(int)
df = [None]*4
while i<72:
   df[m] = out[(out["tenure column"]>=i) & (out["tenure column"]<=(i+17))]
   m += 1
   i += 18

希望这能解决你的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49376781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档