私はcsvファイルを読み、ボケとPDFとCDFを計算しようとしています。私はエラーが発生しています。入力ファイルはkeyword
とfreq
です。周波数の分布をプロットします。以下の入力は50k行以上の行です。エラー - プロットPDFとCDFボケ:/ためのサポートされていないオペランドのタイプ(S):「リスト」と「int型
入力:
#sportsnews,8
#mashupradiomx,1
#arrestobama,2
#alemanha,1
#bizeskiden,1
#musicnews,4
#costumedesign,2
#champain,1
#pacer,1
#brunner,1
#fotoviajera,1
#itsjihadstupid,1
#lesdernierssurvivants,1
#sainsburycentre,1
#alanalwaysinourheart,1
#runinapp,1
#foroporlavida,1
#kidsday,1
#momentofart,2
コード:
# -*- coding: utf-8 -*-
import numpy as np
import scipy.special
import pandas as pd
from bokeh.plotting import figure, show, output_file, vplot
df = pd.read_csv('keyword.csv', header = None)
df.columns = ['keyword','freq']
p5 = figure(title="Weibull Distribution (λ=1, k=1.25)", tools="save",
background_fill_color="#E8DDCB")
lam, k = 1, 1.25
#measured = lam*(-np.log(np.random.uniform(0, 1, 1000)))**(1/k)
#hist, edges = np.histogram(measured, density=True, bins=50)
x = df['freq']
pdf = (k/lam)*(x/lam)**(k-1) * np.exp(-(x/lam)**k)
cdf = 1 - np.exp(-(x/lam)**k)
p5.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:],
fill_color="#036564", line_color="#033649")
p5.line(x, pdf, line_color="#D95B43", line_width=8, alpha=0.7, legend="PDF")
p5.line(x, cdf, line_color="white", line_width=2, alpha=0.7, legend="CDF")
p5.legend.location = "top_left"
p5.xaxis.axis_label = 'x'
p5.yaxis.axis_label = 'Pr(x)'
output_file('histogram.html', title="histogram.py example")
show(vplot(p5))
は、私が唯一の両方line
プロットをプロットしたいです。
エラー:
Traceback (most recent call last):
File "pdf_bokeh.py", line 21, in <module>
pdf = (k/lam)*(x/lam)**(k-1) * np.exp(-(x/lam)**k)
TypeError: unsupported operand type(s) for /: 'list' and 'int'
編集1:x=df['freq']
を変更した後、私は奇妙な出力を取得しています。 フル入力ファイルDropboxデータは本質的にディスクリートですが、依然として分布プロットは以下のように出力されません。
出力:これは実際にそれがどうあるべきかの任意の場所の近くではありません。
以下であることを把握するためにいくつかの空想の統計を行うことができます'x = ['freq']'と定義していますか? – EdChum
@EdChumは 'X'は 'freq'は、私はあなたがしようとしていることを語っているあなたは、x =のDF [「FREQ」] –
をプロットしますこれをintで分けると明らかにエラーになります。 'x = df ['freq']'? – oystein