替换大型数据集中数据格式的最佳方法是啥?
Posted
技术标签:
【中文标题】替换大型数据集中数据格式的最佳方法是啥?【英文标题】:What is the best way to replace the format of data in a large dataset?替换大型数据集中数据格式的最佳方法是什么? 【发布时间】:2020-11-08 19:45:03 【问题描述】:我刚开始研究数据科学,如果这是一个简单的答案,很抱歉,但我已经扫描了谷歌几个小时,并尝试了多种解决方案都无济于事。
基本上,我的数据集已经自动调整了一些值,例如 3-5 到 03-May。我不能简单地更改 Excel 中的值,而是需要清理 Python 中的数据。我的第一个想法是简单地使用替换工具,即df = df.replace('2019-05-03 00:00:00', '3-5')
,但它不起作用,可能是因为时间戳和 str(?) 之间的 dtype 不同 - 如果我调整代码,即df = df.replace('0-2', '3-5')
,它就可以工作。
我不能简单地将该数据添加为缺失值,因为它只是格式错误而不是虚假条目。
有简单的方法吗?
下面列出的是我正在使用的数据的示例 sn-p:
GitHub public gist
代码的 PSB:
#Dependencies
import pytest
import pandas as pd
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('display.max_colwidth', None)
import numpy as np
from google.colab import drive
import io
#Import data
from google.colab import files
upload = files.upload()
df = pd.read_excel(io.BytesIO(upload['breast-cancer.xls']))
df
#Clean Data
df.types
#Correcting tumor-size and inv-nodes values
'''def clean_data(dataset):
for i in dataset:
dataset = dataset.replace('2019-05-03 00:00:00','3-5')
dataset = dataset.replace('2019-08-06 00:00:00','6-8')
dataset = dataset.replace('2019-09-11 00:00:00','9-11')
dataset = dataset.replace('2014-12-01 00:00:00','12-14')
dataset = dataset.replace('2014-10-01 00:00:00','10-14')
dataset = dataset.replace('2019-09-05 00:00:00','5-9')
return dataset
cleaned_dataset = dataset.apply(clean_data)
cleaned_dataset'''
df = df.replace('2019-05-03 00:00:00', '3-5')
df
#Check for duplicates
df.duplicated()
【问题讨论】:
您需要以文本形式显示您的 Python 代码和数据,以便我们为您提供帮助。 我附上了一些代码,但是很乱,最好点击我附上的 GitHub 公共要点链接 - 那里也可以看到数据。 尝试查找要替换的确切元素的类型并替换它,或者使用 .astype(str) 将列转换为 str。仍然无法获取您的数据,因此没有经过测试的答案... 【参考方案1】:df[['tumor-size', 'inv-nodes']] = df[['tumor-size', 'inv-nodes']].astype(str)
那行代码拯救了一天。
【讨论】:
以上是关于替换大型数据集中数据格式的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章