替换大型数据集中数据格式的最佳方法是啥?

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)

那行代码拯救了一天。

【讨论】:

以上是关于替换大型数据集中数据格式的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

从 pdf 文件导入/读取数据的最佳方法是啥?

从大型数据集中过滤掉记录的最佳方法是什么

从大型数据集中提取唯一数据

在 SQL Server 中对大型表进行分区的最佳方法是啥?

存储 R 生成的大型结果的理想格式是啥?

对于大型数据库,从 Impala 采样的最佳查询是啥?