【问题标题】:Calculate mean and std using pandas in python在 python 中使用 pandas 计算均值和标准差
【发布时间】:2016-02-26 19:10:20
【问题描述】:

我在计算平均值和标准时遇到了问题。

我通过

加载了一个 CSV
df = pandas.read_csv("fakedata.csv", skiprows=1, header=None)

然后是方法

df.mean()

什么也没给我。 这是raw data的链接。

>>> df.mean()
Series([], dtype: float64)

我也检查了计数。

>>> df.count()
0    40000
dtype: int64

我的操作系统是 Centos6.7,带有 python 2.7、pandas 0.17.1

pip show pandas
---
Metadata-Version: 2.0
Name: pandas
Version: 0.17.1
Summary: Powerful data structures for data analysis, time series,and statistics
Home-page: http://pandas.pydata.org
Author: The PyData Development Team
Author-email: pydata@googlegroups.com
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: pytz, python-dateutil, numpy

[编辑] 数据框信息显示

>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 40000 entries, 0 to 39999
Data columns (total 1 columns):
0    40000 non-null object
dtypes: object(1)
memory usage: 625.0+ KB

数据框形状显示

>>> df.shape
(40000, 1)

【问题讨论】:

  • 无法在没有原始数据的情况下发表评论,以重现 df.info()df.shape 显示的内容?
  • @EdChum,感谢您的回复,我已经添加了原始数据的链接,以及数据框信息和形状
  • 我无法重现该错误,对我来说它可以正常加载您的数据。我在 Python 2.7.11 和 pandas 0.17.1 上。
  • @JiaMingLin 你在read_csv() 中设置了正确的分隔符吗?因为默认是 ',' 但在你的原始数据中似乎是一个空格。在读取文件时尝试输入sep='\s+'
  • @FabioLamanna,感谢您的评论,事实是我必须指定分隔符,默认为逗号。

标签: python pandas


【解决方案1】:

我认为问题取决于分隔符。将您的文件复制并粘贴到 .csv 文件中,我可以阅读:

df = pandas.read_csv("fakedata.csv", skiprows=1, header=None, sep='\s+')

得到结果:

In [18]: df.mean()
Out[18]: 
0     50.574475
1     49.585400
2    169.478500
3     59.544800
4    119.814275
5     79.557500
6     79.497775
dtype: float64

和:

In [19]: df.std()
Out[19]: 
0    19.787459
1    19.762996
2    14.997920
3    10.034209
4    40.013550
5    19.887973
6    14.947894
dtype: float64

【讨论】:

  • delim_whitespace=True 会在这里执行得更快