【问题标题】:Pandas: How to open certain files熊猫:如何打开某些文件
【发布时间】:2023-03-11 13:50:01
【问题描述】:

我目前正在处理来自此link 的数据集。但我无法从 Pandas 读取这些文件?有人试过玩这些文件吗?

我正在尝试以下方法:

import pandas as pd

df = pd.read_csv("m_4549381c276b46c6.0000")

但我收到以下错误

Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

【问题讨论】:

标签: python python-2.7 pandas dataframe


【解决方案1】:

这些文件是已保存的SFrame 的一部分。

所以你可以这样加载它们:

import sframe

sf = sframe.SFrame('/path/to/dir/')

演示:我已经从people_wiki.gl下载了所有文件,并将它们放在:D:/download/sframe/

In [7]: import sframe

In [7]: sf = sframe.SFrame('D:/download/sframe/')

In [8]: sf
Out[8]:
Columns:
        URI     str
        name    str
        text    str

Rows: 59071

Data:
+-------------------------------+---------------------+
|              URI              |         name        |
+-------------------------------+---------------------+
| <http://dbpedia.org/resour... |    Digby Morrell    |
| <http://dbpedia.org/resour... |    Alfred J. Lewy   |
| <http://dbpedia.org/resour... |    Harpdog Brown    |
| <http://dbpedia.org/resour... | Franz Rottensteiner |
| <http://dbpedia.org/resour... |        G-Enka       |
| <http://dbpedia.org/resour... |    Sam Henderson    |
| <http://dbpedia.org/resour... |    Aaron LaCrate    |
| <http://dbpedia.org/resour... |   Trevor Ferguson   |
| <http://dbpedia.org/resour... |     Grant Nelson    |
| <http://dbpedia.org/resour... |     Cathy Caruth    |
+-------------------------------+---------------------+
+-------------------------------+
|              text             |
+-------------------------------+
| digby morrell born 10 octo... |
| alfred j lewy aka sandy le... |
| harpdog brown is a singer ... |
| franz rottensteiner born i... |
| henry krvits born 30 decem... |
| sam henderson born october... |
| aaron lacrate is an americ... |
| trevor ferguson aka john f... |
| grant nelson born 27 april... |
| cathy caruth born 1955 is ... |
+-------------------------------+
[59071 rows x 3 columns]
Note: Only the head of the SFrame is printed.
You can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.

现在您可以根据需要将其转换为 Pandas DF:

In [17]: df = sf.to_dataframe()

In [18]: pd.options.display.max_colwidth = 40

In [19]: df.head()
Out[19]:
                                       URI                 name                                     text
0  <http://dbpedia.org/resource/Digby_M...        Digby Morrell  digby morrell born 10 october 1979 i...
1  <http://dbpedia.org/resource/Alfred_...       Alfred J. Lewy  alfred j lewy aka sandy lewy graduat...
2  <http://dbpedia.org/resource/Harpdog...        Harpdog Brown  harpdog brown is a singer and harmon...
3  <http://dbpedia.org/resource/Franz_R...  Franz Rottensteiner  franz rottensteiner born in waidmann...
4     <http://dbpedia.org/resource/G-Enka>               G-Enka  henry krvits born 30 december 1974 i...

In [20]: df.shape
Out[20]: (59071, 3)

【讨论】:

  • 谢谢你,正如@Ujjawal 所说,我应该看看 iPython 笔记本。但是graphlab不是免费的。那样的话,我们应该怎么做呢?
  • @chintans,你可以像我一样简单地安装 sframe (pip install sframe)...
  • 感谢@MaxU,这有帮助。
【解决方案2】:

只是澄清MaxU 的答案,您正试图以错误的方式阅读它。它是一个原始文件,其格式包含在 link 的同一文件夹中的其他文件中。 Pandas 要求您事先知道文件的编码格式(即分隔符、列数等)。它不能用作魔术棒来读取任何文件而不知道它。

link 文件夹外的 IPython 笔记本准确显示了如何读取该数据。 MaxU 正确地提到了有问题的特定文件只是 SFrame 的一部分,它是 GraphLab 框架的结构。因此,您试图仅从整体的一部分中提取有意义的数据,因此您无法有意义地做到这一点。

但是,您可以阅读 graphlab 文件并将其转换为 Pandas 数据框。详情见here

【讨论】:

  • 谢谢乌贾瓦尔。我应该看看 iPython 笔记本。但是graphlab不是免费的。那样的话,我们应该怎么做呢?
  • sframe 包含 GraphLab 组件的开源实现。你可以用那个。 MaxU 为您提供了一个示例。您可以通过 pip install sframe 安装 sframe。
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2017-06-01
相关资源
最近更新 更多