问题是当我的数据集只包含整数时,我正在使用的方法给出了浮点数的频率.为什么会发生这种情况以及如何从数据中获取整数频率?
我正在使用pyplot.histogram来绘制出现频率的直方图
import numpy as np
import matplotlib.pyplot as plt
from numpy import *
data = loadtxt('data.txt',dtype=int,usecols=(4,)) #loading 5th column of csv file into array named data.
plt.hist(data) #plotting the column as histogram
Run Code Online (Sandbox Code Playgroud)
我得到直方图,但我注意到如果我"打印"hist(数据)
hist=np.histogram(data)
print hist(data)
Run Code Online (Sandbox Code Playgroud)
我明白了:
(array([ 2323, 16338, 1587, 212, 26, 14, 3, 2, 2, 2]),
array([ 1. , 2.8, 4.6, 6.4, 8.2, 10. , 11.8, 13.6, 15.4,
17.2, 19. ]))
Run Code Online (Sandbox Code Playgroud)
其中第二个数组表示值,第一个数组表示出现次数.
在我的数据集中,所有值都是整数,第二个数组如何发生浮动数字以及如何获得整数频率?
更新:
这解决了问题,谢谢Lev的回复.
plt.hist(data, bins=np.arange(data.min(), data.max()+1))
Run Code Online (Sandbox Code Playgroud)
为了避免创建一个新问题,我如何为每个整数绘制"中间"列?比如说,我希望整数3的列占用2.5到3.5之间的空间而不是3到4之间的空间.

我有这个数据帧
df=pd.DataFrame([["2017-01-14",1],
["2017-01-14",30],
["2017-01-16",216],
["2017-02-17",23],
["2017-02-17",2],
["2017-03-19",745],
["2017-03-19",32],
["2017-03-20",11],
["2017-03-20",222],
["2017-03-21",4]],columns=["date","payout_value"])
Run Code Online (Sandbox Code Playgroud)
要按payout_value日期汇总我使用:
df_daily=df.groupby('date').agg(['sum'])
payout_value
sum
date
2017-01-14 31
2017-01-16 216
2017-02-17 25
2017-03-19 777
2017-03-20 233
2017-03-21 4
Run Code Online (Sandbox Code Playgroud)
如何在x轴上绘制(条形图)日期,在y轴上绘制汇总的支出总和?
我尝试使用df.plot(x='date', y='payout_value',kind="bar")方法,但df_daily数据框中没有"日期"列,print(list(df_daily))给出[('payout_value', 'sum')]
我想测试和比较使用英特尔 MKL 和不使用英特尔 MKL 的 Numpy 矩阵乘法和特征分解性能。
我已经使用pip install mkl(Windows 10(64位),Python 3.8)安装了MKL。
然后我使用这里的示例进行 matmul 和特征分解。
我现在如何启用和禁用 MKL 以便检查使用 MKL 和不使用 MKL 时的 numpy 性能?
参考代码:
import numpy as np
from time import time
def matrix_mul(size, n=100):
# reference: https://markus-beuckelmann.de/blog/boosting-numpy-blas.html
np.random.seed(112)
a, b = np.random.random((size, size)), np.random.random((size, size))
t = time()
for _ in range(n):
np.dot(a, b)
delta = time() - t
print('Dotted two matrices of size %dx%d in %0.4f ms.' % (size, size, delta / n …Run Code Online (Sandbox Code Playgroud) 我试图绘制标准直方图,但是在y轴上得到1作为最大值,我得到不同的数字.
对于数组k =(1,4,3,1)
import numpy as np
def plotGraph():
import matplotlib.pyplot as plt
k=(1,4,3,1)
plt.hist(k, normed=1)
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
plotGraph()
Run Code Online (Sandbox Code Playgroud)
我得到这个直方图,看起来不像诺曼.

对于不同的数组k =(3,3,3,3)
import numpy as np
def plotGraph():
import matplotlib.pyplot as plt
k=(3,3,3,3)
plt.hist(k, normed=1)
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
plotGraph()
Run Code Online (Sandbox Code Playgroud)
我得到这个直方图,最大y值是10.

对于不同的k,即使normed = 1或normed = True,我也得到不同的y的最大值.
为什么规范化(如果有效)会根据数据发生变化,如何使y的最大值等于1?
更新:
我试图通过在matplotlib中绘制条形高度总和为1的直方图来实现CarstenKönig的答案并得到非常奇怪的结果:
import numpy as np
def …Run Code Online (Sandbox Code Playgroud) 我有包含字段last_payout和amount. 我需要对amount每个月的所有内容求和并绘制输出。
df[['last_payout','amount']].dtypes
last_payout datetime64[ns]
amount float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
——
df[['last_payout','amount']].head
<bound method NDFrame.head of last_payout amount
0 2017-02-14 11:00:06 23401.0
1 2017-02-14 11:00:06 1444.0
2 2017-02-14 11:00:06 0.0
3 2017-02-14 11:00:06 0.0
4 2017-02-14 11:00:06 290083.0
Run Code Online (Sandbox Code Playgroud)
我使用 jezrael 的答案中的代码来绘制每月的交易数量。
(df.loc[df['last_payout'].dt.year.between(2016, 2017), 'last_payout']
.dt.to_period('M')
.value_counts()
.sort_index()
.plot(kind="bar")
)
Run Code Online (Sandbox Code Playgroud)
每月交易次数:
我如何总结amount每个月的所有内容并绘制输出?我应该如何扩展上面的代码来做到这一点?
我试图实施.sum但没有成功。