【问题标题】:TypeError: data type "category" not understoodTypeError:数据类型“类别”不理解
【发布时间】:2018-05-24 16:24:51
【问题描述】:

当我尝试使用 dtype='category' 解决一些问题时,我得到了错误。我已经阅读了以前的答案并申请了,但没有一个答案能解决问题,因为它们都很老了 我的代码是,

train = pd.read_csv("C:/shubhamprojectwork/Kagglecomp/livecomp/My music recomment/train.csv/train.csv", dtype={'msno' : 'category','song_id' : 'category','source_system_tab' : 'category','source_screen_name' : 'category','source_type' : 'category','target' : np.uint8})

错误是

TypeError                                 Traceback (most recent call last)
<ipython-input-47-7d016844c8d7> in <module>()
      1 
      2 #train = pd.read_csv(data_path + 'train.csv', dtype={'msno' : category,'song_id' : 'category','source_system_tab' : 'category','source_screen_name' : 'category','source_type' : 'category','target' : np.uint8})
----> 3 train = pd.read_csv(data_path + 'train.csv', dtype={'msno' : 'category'})

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
    560                     skip_blank_lines=skip_blank_lines)
    561 
--> 562         return _read(filepath_or_buffer, kwds)
    563 
    564     parser_f.__name__ = name

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
    313 
    314     # Create the parser.
--> 315     parser = TextFileReader(filepath_or_buffer, **kwds)
    316 
    317     if (nrows is not None) and (chunksize is not None):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, f, engine, **kwds)
    643             self.options['has_index_names'] = kwds['has_index_names']
    644 
--> 645         self._make_engine(self.engine)
    646 
    647     def close(self):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine)
    797     def _make_engine(self, engine='c'):
    798         if engine == 'c':
--> 799             self._engine = CParserWrapper(self.f, **self.options)
    800         else:
    801             if engine == 'python':

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, src, **kwds)
   1211         kwds['allow_leading_cols'] = self.index_col is not False
   1212 
-> 1213         self._reader = _parser.TextReader(src, **kwds)
   1214 
   1215         # XXX

pandas/parser.pyx in pandas.parser.TextReader.__cinit__ (pandas\parser.c:4625)()

TypeError: data type "category" not understood

【问题讨论】:

  • 在msno之后使用引号中的类别
  • 你的熊猫版本是什么?似乎有些数据问题(如果不是旧版 pandas),如果不保密,是否可以分享您的文件?
  • @jezrael,你可以从这里下载link
  • @Shivpe_R 我们都有相同的数据集,但我们的计算机中没有运行相同的代码

标签: python-3.x pandas dataframe data-analysis data-science


【解决方案1】:
train = pd.read_csv("C:/shubhamprojectwork/Kagglecomp/livecomp/My music recomment/train.csv/train.csv", dtype={'msno' : 'category','song_id' : 'category','source_system_tab' : 'category','source_screen_name' : 'category','source_type' : 'category','target' : np.uint8})

在引号中使用category,如图所示。

【讨论】:

  • 同样的异常@shivpe_R
  • 我有来自 kaggle 的相同数据集,对我来说它有效,我使用的是 Python 3.5.3,@ShubhamSharma
  • @Shivpe_R - 你测试https://www.kaggle.com/c/kkbox-music-recommendation-challenge/data 吗?对我来说,它返回与 OP 相同的错误。
  • 很奇怪,什么返回print (train['song_id'].nunique())?我使用pandas 0.21.0,然后它看起来像错误。
  • 看来是上一版pandas的bug
猜你喜欢
  • 2020-06-16
  • 2021-06-11
  • 2020-03-25
  • 2021-07-17
  • 2018-12-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多