[英]How to solve pandas.get_dummies Exception: Data must be 1-dimensional
我正在嘗試讀取工資數據集Wages.csv 。 然后嘗試將列裝箱。 但是我得到一個例外,表明數據必須是一維的
這些代碼已在下面復制,並給出了數據集鏈接。
# import modules
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
%matplotlib inline
# read data_set
data = pd.read_csv("Wage.csv")
data.head()
data_x = data['age']
data_y = data['wage']
# Dividing data into train and validation datasets
from sklearn.model_selection import train_test_split
train_x, valid_x, train_y, valid_y = train_test_split(data_x, data_y, test_size=0.33, random_state = 1)
# Dividing the data into 4 bins
df_cut, bins = pd.cut(train_x, 4, retbins=True, right=True)
df_cut.value_counts(sort=False)
df_steps = pd.concat([train_x, df_cut, train_y], keys=['age','age_cuts','wage'], axis=1)
# Create dummy variables for the age groups
df_steps_dummies = pd.get_dummies(df_cut)
df_steps_dummies.head()
df_steps_dummies.columns = ['17.938-33.5','33.5-49','49-64.5','64.5-80']
# Fitting Generalised linear models
fit3 = sm.GLM(df_steps.wage, df_steps_dummies).fit()
# Binning validation set into same 4 bins
bin_mapping = np.digitize(valid_x, bins)
X_valid = pd.get_dummies(bin_mapping)
我遇到異常異常:數據必須是一維的
如果查看數據,則其格式為:[1] [2]…[3]
您需要將其設置為[1 2…3]
將數據展平為單個列表,然后將其放回np.array即可。
例如:
碼:
def binMapping(x):
flat = []
prestep = np.digitize(x, bins)
for sublist in prestep:
for ele in sublist:
flat.append(ele)
return np.array(flat)
bin_mapping = binMapping(valid_x)
X_valid = pd.get_dummies(bin_mapping)
這可行。 我敢肯定有更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.