今天最后一个新手大熊猫问题:如何为单个系列生成一个表?
例如:
my_series = pandas.Series([1,2,2,3,3,3])
pandas.magical_frequency_function( my_series )
>> {
1 : 1,
2 : 2,
3 : 3
}
Run Code Online (Sandbox Code Playgroud)
很多谷歌搜索让我进入了Series.describe()和pandas.crosstabs,但这些都不是我需要的:一个变量,按类别计算.哦,如果它适用于不同的数据类型会很好:字符串,整数等.
但是,关于计算两个或更多系列组合的最佳方法的问题较少.解决方案呈现(1,2),但是,当和为什么要使用的每个没有讨论.
以下是三种潜在方法的基准测试.我有两个具体问题:
grouper效率更高count?我预计count它会更高效,因为它在C中实现.grouper即使列数从2增加到4 ,优越的性能仍然存在.value_counter表现不佳grouper?这是由于从列表构建列表或系列的成本吗?我理解输出是不同的,这也应该告知选择.例如,使用连续numpy数组与字典理解相比,按计数过滤更有效:
x, z = grouper(df), count(df)
%timeit x[x.values > 10] # 749µs
%timeit {k: v for k, v in z.items() if v > 10} # 9.37ms
Run Code Online (Sandbox Code Playgroud)
然而,我的问题的重点是在一系列与字典中建立可比较结果的表现.我的C知识是有限的,但我会感谢任何可以指出这些方法的基础逻辑的答案.
基准代码
import pandas as pd
import numpy as np
from collections import Counter
np.random.seed(0)
m, n = …Run Code Online (Sandbox Code Playgroud) 我想计算每个值出现在数据帧中的次数.
这是我的数据框 - df:
status
1 N
2 N
3 C
4 N
5 S
6 N
7 N
8 S
9 N
10 N
11 N
12 S
13 N
14 C
15 N
16 N
17 N
18 N
19 S
20 N
Run Code Online (Sandbox Code Playgroud)
我想要计数字典:
恩. counts = {N: 14, C:2, S:4}
我试过df['status']['N']但它给了但keyError也df['status'].value_counts没有用.
我在数据框中有一列
水果
苹果
芒果
香蕉
苹果
芒果
香蕉
苹果
芒果
葡萄
我想按其中出现的值的频率对此列进行排序,因此数据框现在应该是:
水果
苹果
苹果
苹果
香蕉
香蕉
香蕉
芒果
芒果
葡萄
谢谢!
我有一个只有一列和大约 80 万行的长数据框。我的数据框看起来像这样
54
53
53
53
53
...
0
0
0
Run Code Online (Sandbox Code Playgroud)
所以我需要的是计算每个值的出现次数并将其保存到数据帧中,因此结果将是这样的
54 1
53 1000
52 800
...
0 100000
Run Code Online (Sandbox Code Playgroud)
我试过使用,df.groupby(0)但它只返回一个对象。如何获得两列数据框(或 1 列和显示值的行索引)?
我是数据分析方面的新手。我正在尝试使用 python 分析数据集。
PassengerId Survived Pclass Sex
0 1 0 3 male
1 2 1 1 female
2 3 1 3 male
3 4 1 1 female
4 5 0 3 male
我试过 groupby() 但它给出了错误。
In[88] titanic_data.groupby('Survived')
Out[88] <pandas.core.groupby.DataFrameGroupBy object at 0x000000000BFFE588>
请提出解决方案
pandas ×6
python ×6
dataframe ×2
counter ×1
data-science ×1
dictionary ×1
django ×1
frequency ×1
numpy ×1
sorting ×1
statistics ×1