python - 使用 pandas 导入转换后的数据

标签 python csv pandas linear-regression

我有一个如下所示的 csv 文件:

patient_id  age_in_years    CENSUS_REGION   URBAN_RURAL_STATUS  YEAR    MONTH   DAY_NUMBER_IN_MONTH race
11511   7   Northeast   Urban   2011    6   20  Other
9882613 73  South   Urban   2011    7   25  Unknown
32190339    49  West    Urban   2011    8   13  Caucasian
...

我已使用以下方法将此文件中的分类数据(例如种族、人口普查区域、城市/农村状况等)转换为二进制向量对象:

def URSTATUS_to_numeric(a):
if a == 'Urban':
    return [1, 0, 0]
if a == 'Rural':
    return [0, 1, 0]
if a == 'NULL':
    return [0, 0, 1]

df['URSTATUS_num'] = df['URBAN_RURAL_STATUS'].apply(URSTATUS_to_numeric)

我想使用这些向量进行线性回归分析,但无法使用以下代码调用它们:

def import_data(file_name):
 df = pd.read_csv(file_name).drop_duplicates()
 X_parameter = []
 #Y_parameter = []
 for alpha in zip(df['age_in_years']):
       X_parameter.append([float(alpha)])
       #Y_parameter.append(float(beta))
 return X_parameter#, Y_parameter

X = import_data(filename)

Y = df['URSTATUS_num']

我收到的错误是这样的:

TypeError: float() argument must be a string or a number   

最佳答案

如果您只是迭代该系列来构建 float 列表,则可以使用 astype (漂浮)。

不过,该列中似乎有一些值无法转换为 float 。为了排除故障,也许只需尝试

for alpha in zip(df['age_in_years']):
    try:
       X_parameter.append([float(alpha)])
    except:
       print alpha

您应该能够使用

替换整个函数
X = pd.read_csv(file_name).drop_duplicates()['age_in_years'].astype(float)

关于python - 使用 pandas 导入转换后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926454/

相关文章:

python - m 上三角矩阵中的最小值,其索引为元组列表

php - 需要适本地在 CSV 中标题标题,而不是使用表列标题

python - 使用 odo 加载 CSV -> AWS 上的 postgres

python - 如何将导入的txt文件的文件名添加到python中的数据帧

python - 在python中使用 map 不一致

python - 以 Python 2.6-/Python 3 中立的方式提示嵌套上下文管理器?

Javascript:用逗号分割字符串但忽略引号中的逗号

python - 计算不同类型的支出 - Pandas/Numpy - Python

python - 如何删除 unicode 字符串 "[u' 字符串]"当我写 CSV 文件时

linux - 如何在unix中修改同一个文件?