【问题标题】:How does pandas.DataFrame got converted to numpy.ndarraypandas.DataFrame 如何转换为 numpy.ndarray
【发布时间】:2020-07-06 21:57:19
【问题描述】:

我是 ML、pandas 和 numpy 的新手。

我正在浏览一个线性回归程序的 jupyter 文件。我在那里看到 dataset = pd.read_csv('C:\First ML Projects/winequality.csv').

当我执行type(dataset) 时,我得到了pandas.core.frame.DataFrame。有道理,因为数据集是使用 pd 的方法创建的

然后,就有了这段代码,

X = dataset[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates','alcohol']].values

当我使用type(X) 时,我得到了numpy.ndarray。

第一个问题:为什么X 不是pandas.DataFrame 格式?

第二:当没有提到numpy或np时,它是如何转换为numpy.ndarray的?

第三:pandas.DataFrame 和 numpy.ndarray 都存储数据有什么区别?

【问题讨论】:

  • 如果df 是一个数据框,那么df.values 是一个numpy 数组。

标签: python pandas numpy linear-regression


【解决方案1】:
  1. X = dataset[['fixed acidity', ..., 'alcohol']] 表示 DataFrame 被列名列表索引。结果仍然是一个 DataFrame,仅包含选定的列。但是随后将 pd.df.values() 方法应用于此 DataFrame。此方法返回底层 NumPy 数组。
  2. Pandas 构建在 NumPy 之上,因此如果您在 DataFrame 中有数字数据,它们将存储在引擎盖下的 NumPy 数组中。同样,pd.df.values() 方法在此处明确说明了这一点。
  3. NumPy 数组针对数值数据进行了优化,而 Pandas 则适用于所有类型的数据。 Pandas 有更多方法来处理 DataFrame 中的数据,但它通常比纯 NumPy 慢。 DataFrame 是二维的,具有行索引和列标签,而 NumPy ndarray 可以有任意数量的维度,但没有任何标签。

【讨论】:

  • Pandas is built on top of NumPy 这清除了一切。我的印象是 pandas 和 numpy 是两个不同的东西,因此很难理解 numpy 是从哪里冒出来的。谢谢你的回答。
猜你喜欢
  • 2014-08-11
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2022-12-03
  • 2019-10-06
  • 2018-06-07
  • 2020-02-25
相关资源
最近更新 更多