在pandas中无法使用灵活类型错误执行reduce

时间:2018-03-20 20:25:46

标签: python pandas

我有一个包含4个属性的数据集:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import random
import datetime
import numpy as np

# generate some data with a datetime index
x = 400
data = pd.DataFrame([
    random.random() for i in range(x)],
    index=[datetime.datetime(2018, 1, 1, 0)
           + datetime.timedelta(hours=i) for i in range(x)])
# Set all data on a Saturday (5) to nan, so it doesn't show in the graph           
data[data.index.weekday == 5] = np.nan

# Plot the data
fig, ax = plt.subplots(figsize=(12, 2.5))
ax.plot(data)

# Set a major tick on each weekday
days = mdates.DayLocator()
daysFmt = mdates.DateFormatter('%a')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)

每个属性的数据类型如下:

  taxi id   date time   longitude   latitude
0   1   2/2/2008 15:36  116.51  39.92
1   1   2/2/2008 15:46  116.51  39.93
2   1   2/2/2008 15:56  116.51  39.91
3   1   2/2/2008 16:06  116.47  39.91
4   1   2/2/2008 16:16  116.47  39.92

我想计算每个属性的均值和标准差(std)。

我的意思是尝试过这段代码:

taxi id    dtype('int64')
date time  dtype('O')
longitude   dtype('float64')
latitude    dtype('float64')

但它给我的错误如下:

np.mean('longitude')

2 个答案:

答案 0 :(得分:1)

您可以使用pandas describe

df.describe()
Out[878]: 
           taxi   id   longitude   latitude
count  5.000000  5.0    5.000000   5.000000
mean   2.000000  1.0  116.494000  39.918000
std    1.581139  0.0    0.021909   0.008367
min    0.000000  1.0  116.470000  39.910000
25%    1.000000  1.0  116.470000  39.910000
50%    2.000000  1.0  116.510000  39.920000
75%    3.000000  1.0  116.510000  39.920000
max    4.000000  1.0  116.510000  39.930000

答案 1 :(得分:0)

您必须指明您正在寻找数据框的平均值。事实上,当您致电numpy.mean()时,您根本没有引用您的数据框。

如果数据框名为df,则使用pandas.Series.mean应该有效,如下所示:

df['longitude'].mean()
df['longitude'].std()

实际上,您在字符串上调用numpy.mean(),这并不意味着什么。如果您真的想使用numpy.mean(),可以使用np.mean(df['longitude'])