【问题标题】:Finding median of entire pandas Data frame查找整个熊猫数据框的中位数
【发布时间】:2017-09-25 18:36:13
【问题描述】:

我正在尝试查找整个数据帧的中位流量。第一部分是仅选择数据框中的某些项目。

这有两个问题,它包括数据框的部分不处于“状态”。此外,中位数不是单个值,它是基于行的。如何获得数据框中所有数据的总体中位数?

【问题讨论】:

  • 为了将来参考,图片在 Stack Overflow 上表现不佳,我们更希望您的代码输出。你有StateValue 专栏还是每个州都是专栏?
  • 每一个都是一列
  • 有什么方法可以给我们你的数据框样本吗?这样我们可以通过复制来制作我们自己的吗?它会帮助我们,帮助你。你可能需要melt
  • 我认为,如果您想要 DataFrame 中 all 数据的单一中位数,那么您选择了错误的数据结构或做出了另一个错误的设计决策。
  • 我只是把部分数据框放进去

标签: python pandas


【解决方案1】:

由于一些空格,您粘贴的 DataFrame 有点乱。但是你会想要melt Dataframe,然后在新融化的 Dataframe 上使用median()

df2 = pd.melt(df, id_vars =['U.S.'])
print(df2['value'].median())

您的 Dataframe 可能略有不同,但概念是相同的。查看我留下的评论,了解pd.melt(),尤其是value_varsid_vars 参数。

这是我如何进行清洁并获得正确答案的非常详细的方法:

# reading in on clipboard
df = pd.read_clipboard()

# printing it out to see and also the column names
print(df)
print(df.columns)

# melting the DF and then printing the result
df2 = pd.melt(df, id_vars =['U.S.'])
print(df2)

# Creating a new DF so that no nulls are in there for ease of code readability
# using .copy() to avoid the Pandas warning about working on top of a copy
df3 = df2.dropna().copy()

# there were some funky values in the 'value' column. Just getting rid of those
df3.loc[df3.value.isin(['Columbia', 'of']), 'value'] = 99

# printing out the cleaned version and getting the median
print(df3)
print(df3['value'].median())

【讨论】:

    【解决方案2】:

    两种选择:

    1) 熊猫选项:

    df.stack().median()
    

    2) 一个 numpy 选项:

    np.median(df.values)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-04
      • 2015-06-28
      • 2019-01-26
      • 1970-01-01
      • 2014-03-13
      • 2018-04-21
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多