相关疑难解决方法(0)

在Pandas数据框中查找唯一值,无论行或列位置如何

我有一个Pandas数据帧,我想找到该数据帧中的所有唯一值...无论行/列如何.如果我有一个10 x 10的数据帧,并假设它们有84个唯一值,我需要找到它们 - 而不是计数.

我可以通过迭代数据帧的行来创建一个集合并添加每行的值.但是,我觉得它可能效率低下(不能证明这一点).有找到它的有效方法吗?有预定义的功能吗?

python dataframe pandas

50
推荐指数
2
解决办法
9万
查看次数

Pandas:计算数据框中的唯一值

我们有一个如下所示的DataFrame:

> df.ix[:2,:10]
    0   1   2   3   4   5   6   7   8   9   10
0   NaN NaN NaN NaN  6   5  NaN NaN  4  NaN  5
1   NaN NaN NaN NaN  8  NaN NaN  7  NaN NaN  5
2   NaN NaN NaN NaN NaN  1  NaN NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)

我们只想要DataFrame中所有唯一值的计数.一个简单的解决方案是

df.stack().value_counts() 
Run Code Online (Sandbox Code Playgroud)

但是:1.看起来像是stack返回副本,而不是视图,在这种情况下,内存禁止.它是否正确?2.我想按行对DataFrame进行分组,然后为每个分组获取不同的直方图.如果我们忽略了内存问题stack并暂时使用它,那么如何正确地进行分组呢?

d = pd.DataFrame([[nan, 1, nan, 2, 3],
              [nan, 1, 1, 1, 3],
              [nan, 1, nan, 2, 3],
              [nan,2,2,2, 3]])

len(d.stack()) #14
d.stack().groupby(arange(4))
AssertionError: …
Run Code Online (Sandbox Code Playgroud)

python pandas

8
推荐指数
1
解决办法
3万
查看次数

熊猫:通过循环遍历每列中的唯一值?

我有一个非常大的数据帧,我想从每列生成唯一的值.这只是一个样本 - 总共有20多列.

          CRASH_DT        CRASH_MO_NO     CRASH_DAY_NO
          1/1/2013        01              01    
          1/1/2013        01              01
          1/5/2013        03              05
Run Code Online (Sandbox Code Playgroud)

我想要的输出是这样的:

<variable = "CRASH_DT">
   <code>1/1/2013</code>
   <count>2</count>
   <code>1/5/2013</code>
   <count>1</count>
</variable>
<variable = "CRASH_MO_NO">
   <code>01</code>
   <count>2</count>
   <code>03</code>
   <count>1</count>
</variable>
<variable = "CRASH_DAY_NO">
   <code>01</code>
   <count>2</count>
   <code>05</code>
   <count>1</count>
</variable>
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用.sum()或.unique()函数,正如我已经看过的关于这个主题许多其他问题所建议的那样.

它们似乎都不适用于这个问题,并且所有人都说为了从每一列生成唯一值,您应该使用groupby函数,或者选择单个列.我有非常多的专栏(超过20个),因此仅仅通过写出df.unique ['col1','col2'...'col20'将它们组合在一起真的没有意义

我试过.unique(),. value_counts()和.count,但是我无法弄清楚如何应用任何这些来跨多个列工作,而不是groupby函数或上面链接中建议的任何内容.

我的问题是:如何从真正庞大的数据帧中的每个列生成唯一值的计数,最好是通过循环遍历列本身?(我很抱歉,如果这是重复的,我已经查看了很多关于这个主题的问题,虽然他们看起来也应该为我的问题工作,但我无法弄明白如何调整它们以使它们得到它们为我工作.)

到目前为止这是我的代码:

import pyodbc
import pandas.io.sql

conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Users\\<filename>.accdb')

sql_crash = "SELECT * FROM CRASH"
df_crash = pandas.io.sql.read_sql(sql_crash, conn)
df_c_head = df_crash.head()
df_c_desc = df_c_head.describe() …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
1944
查看次数

标签 统计

pandas ×3

python ×3

dataframe ×2