我有一个数据框:
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) 例如:
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) 我有一个看起来像这样的数据框。
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 行要绘制,但我相信您已经了解了我想要实现的目标。任何帮助将非常感激。
谢谢!
我有一个特定的 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)
任何帮助或提示将不胜感激!先感谢您。:)
假设我有以下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) 我有一个具有这些尺寸(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)
谢谢。
我的数据帧看起来像:
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) pandas ×6
python ×6
numpy ×3
count ×1
dataframe ×1
duplicates ×1
matplotlib ×1
matrix ×1
row ×1