小编San*_*apa的帖子

使用熊猫中首次出现的索引计算过渡的最小值和最大值

我有一个数据框:

df = pd.DataFrame({'ID':['a','b','d','d','a','b','c','b','d','a','b','a'], 
                   'sec':[3,6,2,0,4,7,10,19,40,3,1,2]})
print(df)
   ID  sec
0   a    3
1   b    6
2   d    2
3   d    0
4   a    4
5   b    7
6   c   10
7   b   19
8   d   40
9   a    3
10  b    1
11  a    2
Run Code Online (Sandbox Code Playgroud)

我想计算发生了多少次转换。此处在ID列中a->b被视为过渡,对于b->d, d->d, d->a, b->c, c->b, b->a. 我可以使用以下方法执行此操作Counter

Counter(zip(df['ID'].to_list(),df['ID'].to_list()[1:]))
Counter({('a', 'b'): 3,
         ('b', 'd'): 2,
         ('d', 'd'): 1,
         ('d', 'a'): 2,
         ('b', 'c'): 1,
         ('c', 'b'): 1,
         ('b', 'a'): …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

10
推荐指数
1
解决办法
364
查看次数

Pandas Series value_counts对不同的计数有不同的工作方式

例如:

df1 = pd.DataFrame(np.repeat(np.arange(1,7),3), columns=['A'])

df1.A.value_counts(sort=False)
1    3
2    3
3    3
4    3
5    3
6    3
Name: A, dtype: int64
Run Code Online (Sandbox Code Playgroud)
df2 = pd.DataFrame(np.repeat(np.arange(1,7),100), columns=['A'])

df2.A.value_counts(sort=False)
1    100
2    100
3    100
4    100
5    100
6    100
Name: A, dtype: int64
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,它value_counts完美地工作并给出了所需的结果.而当进入更大的数据帧时,它会提供不同的输出.这里的A值已经排序,计数也相同,但是A后面改变的索引的顺序value_counts.为什么它适用于小数量但不适用于大数量:

df3 = pd.DataFrame(np.repeat(np.arange(1,7),1000), columns=['A'])

df3.A.value_counts(sort=False)
4    1000
1    1000
5    1000
2    1000
6    1000
3    1000
Name: A, dtype: int64
Run Code Online (Sandbox Code Playgroud)

在这里,我可以做df3.A.value_counts(sort=False).sort_index()df3.A.value_counts(sort=False).reindex(df.A.unique()).我想知道为什么它对不同的计数表现不同?

使用:

Numpy …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

6
推荐指数
1
解决办法
163
查看次数

在熊猫数据框中按颜色值绘制颜色

我有一个看起来像这样的数据框。

raw_data = {'Enum': ['E330','E322','E124','E500'],'Count': [234, 122, 765, 433],
'Colors':['red','blue','green','yellow']}

additives_count = pd.DataFrame(raw_data)
Run Code Online (Sandbox Code Playgroud)

我想绘制一个条形图,我使用了下面的代码。

ax = additives_count.plot(kind='barh',colors=additives_count['Colors'])
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我无法在 Enum 中显示相应的颜色。我得到了条形图,但只有 1 种颜色。例如,我的绘图应该将 E330 绘制为红色,E322 绘制为蓝色,E124 绘制为绿色,E500 绘制为黄色。我怎样才能做到这一点?

请注意,这只是我数据的一个很小的子集。我总共有 30 行要绘制,但我相信您已经了解了我想要实现的目标。任何帮助将非常感激。

谢谢!

matplotlib pandas

5
推荐指数
1
解决办法
1712
查看次数

Python:如何计算数据帧中特定列中的特定值

我有一个特定的 csv 例如:

col1 col2 col3 col4

a    1    2     3

b    1    2     1 

c    1    1     3

d    3    1     2 
Run Code Online (Sandbox Code Playgroud)

我想计算特定值的数量,例如。1 在 col2、col3 和 col4

我使用以下代码使用熊猫

import pandas as pd

fname = input('Enter the filename:')
df = pd.read_csv (fname, header='infer')
one = df.iloc[:,1:4].value_counts(normalize=False).loc[1]
Run Code Online (Sandbox Code Playgroud)

它显示错误,但是当我对特定定义的列执行相同操作时,代码运行正常

import pandas as pd
fname = input('Enter the filename:')
df = pd.read_csv (fname, header='infer')
one = df[col1].value_counts(normalize=False).loc[1]
Run Code Online (Sandbox Code Playgroud)

我想要以下输出

col2 3

col3 2

col4 1
Run Code Online (Sandbox Code Playgroud)

任何帮助或提示将不胜感激!先感谢您。:)

python count dataframe pandas

5
推荐指数
1
解决办法
8174
查看次数

Pandas:从多列中删除NaN并将其转换为int的最佳方法

假设我有以下CSV数据:

col1,col2,col3,label
,1,2,label1
3,,4,label2
5,6,7,label3
Run Code Online (Sandbox Code Playgroud)

读取此数据并将col1和col2转换为int的最佳方法是什么?

我能够使用并转换我的过滤数据帧,它只有数字列(col1,col2,col3).如何修改主数据框本身而忽略了作为字符串的标签列?

在相关的说明中,我也可以使用下面的命令.知道如何在循环中运行它,以便动态生成变量名col%d,因为我有32列.

filter_df.col1 = filter_df.col1.fillna(0).astype(int)
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何将矩阵的每一行复制N次

我有一个具有这些尺寸(150,2)的矩阵,我想每行重复N次。我举一个例子来说明我的意思。

输入:

a = [[2, 3], [5, 6], [7, 9]]
Run Code Online (Sandbox Code Playgroud)

假设N = 3,我需要此输出:

[[2 3]
 [2 3]
 [2 3]
 [5 6]
 [5 6]
 [5 6]
 [7 9]
 [7 9]
 [7 9]]
Run Code Online (Sandbox Code Playgroud)

谢谢。

python numpy row matrix duplicates

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

如何根据ID计算同一组内的计数

我的数据帧看起来像:

df = pd.DataFrame({"ID":['A','B','A','A','B','B','C','D','D','C'], 
                   'count':[1,1,2,2,2,2,1,1,1,2]})
print(df)
  ID  count
0  A      1
1  B      1
2  A      2
3  A      2
4  B      2
5  B      2
6  C      1
7  D      1
8  D      1
9  C      2
Run Code Online (Sandbox Code Playgroud)

我将只有ID列,我想计算count列。逻辑是我想累积计算ID. 如果它立即重复,就像index 2 & 3它们都应该得到相同的计数。我怎样才能做到这一点?

我的尝试没有给出准确的结果:

df['x'] = df['ID'].eq(df['ID'].shift(-1)).astype(int)
df.groupby('ID')['x'].transform('cumsum')+1
0    1
1    1
2    2
3    2
4    2
5    2
6    1
7    2
8    2
9    1
Name: x, dtype: int32 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

标签 统计

pandas ×6

python ×6

numpy ×3

count ×1

dataframe ×1

duplicates ×1

matplotlib ×1

matrix ×1

row ×1