예제 #1
0
def main():
    df = pd.read_csv(StringIO(dat),
                     sep=';',
                     index_col='ts',
                     parse_dates=['ts'])
    # Basic line plot
    chart1 = serialize(df, render_to="my-chart1", title="My Chart")
    # Basic column plot
    chart2 = serialize(df, render_to="my-chart2", title="Test", kind="bar")
    # Basic column plot
    chart3 = serialize(df, render_to="my-chart3", title="Test", kind="barh")
    # Plot C on secondary axis
    chart4 = serialize(df,
                       render_to="my-chart4",
                       title="Test",
                       secondary_y=["C"])
    # Plot on a 1000x700 div
    chart5 = serialize(df,
                       render_to="my-chart5",
                       title="Test",
                       figsize=(1000, 700))
    return render_template('index.html',
                           chart1=chart1,
                           chart2=chart2,
                           chart3=chart3,
                           chart4=chart4,
                           chart5=chart5)
예제 #2
0
	def return_number_of_messages_by_week_year_and_user(self, as_chart=False):

		m_by_week_year = self.df[['id_message', 'user_name']].copy()
		m_by_week_year.loc[:, 'year'] = m_by_week_year.index.year
		m_by_week_year.loc[:, 'week'] = m_by_week_year.index.week
		m_by_week_year = m_by_week_year.groupby(['year', 'week', 'user_name']).count().unstack().fillna(0)
 		m_by_week_year = m_by_week_year['id_message']
		m_by_week_year.loc[:, 'Total'] = m_by_week_year.sum(axis=1)

		if as_chart:
			config = serialize(m_by_week_year, kind='bar', title='Messages by Week, Year and User',
							   output_type='json', rot=45)
			config["yAxis"][0]["labels"]["rotation"] = 0
			config["yAxis"][0]["title"] = {"text": "# messages"}
			config["chart"]["marginTop"] = 70

			for k, v in config.iteritems():
				if k == "series":
					r = np.random.choice(len(v), 2, replace=False)
					for j, d in enumerate(v):
						if j not in r:
							config["series"][j]["visible"] = False

			return {'options':config, 'series':config['series']}
		else:
			return m_by_week_year
예제 #3
0
	def return_share_of_conversations_first_replied_by_user(self, as_chart=False):

		counts = dict()
		for u in self.chat.users:
		    counts[u.name] = 0

		conv_to_messages, conv_to_users = self.return_conversations(60)
		conv_to_user_pos = self.return_users_conversations_at_position(conv_to_messages, pos=1)

		for u in conv_to_user_pos.values():
		    counts[u.name] += 1
		m_conv_user = pd.DataFrame(counts.items(), columns=['user', 'Ratio of Conversations'])

		total_num_convs = len(conv_to_user_pos.values())

		m_conv_user['Ratio of Conversations'] = 100.0 * m_conv_user['Ratio of Conversations'] / total_num_convs
		m_conv_user.set_index('user', inplace=True)

		if as_chart:
			tooltip = {'pointFormat': '{series.name}: <b>{point.percentage:.1f}%</b>'}
			config = serialize(m_conv_user, kind='pie', title='Ratio of Conversations First Replied by User',
							   output_type='json', tooltip=tooltip)
			config["chart"]["marginTop"] = 70

			return {'options':config, 'series':config['series']}
		else:
			return m_conv_user
예제 #4
0
def protocol_summary(request):
    '''Relies on django_highcharts for serializing data. Makes multiple chart
    rendering on a page more simple, however it doesn't appear to allow much
    in they way of customization.
    '''
    '''define a range, avg, diplay max and min'''

    athlete = get_user(request)
    data = BoulderingRoutineMetrics.objects.filter(session__athlete = athlete)
    test = BoulderingRoutineMetrics.objects.values('min', 'max').filter(session__athlete = athlete)
    df = read_frame(data, verbose=False)
    df['avg'] = df['total_points']/df['total_climbs']
    df['range'] = df['max']-df['min']
    df = df.drop(['id','total_climbs', 'total_points'], axis=1).set_index('session')
    dataset = BoulderingRoutineMetrics.objects \
        .values('session__sessionDate', 'min','max', 'total_points', 'total_climbs') \
        .filter(session__athlete = athlete)
    df2 = read_frame(dataset, verbose=False).rename(columns={'session__sessionDate':'session date','min':'min value','max':'max value'})
    df3 = read_frame(dataset, fieldnames=['min','max'])\
                   .rename(columns={'session__sessionDate':'Session Date'})
                   # .drop(['total_points', 'total_climbs'])

    df4 = df2.merge(df3, how='left', left_index=True, right_index=True)
    print(df4)
    df4['avg']=df4['total_points']/df4['total_climbs']
    df4['range']=df4['max value']-df4['min value']
    chart = serialize(df4, render_to='my-chart', kind="bar", output_type='json')

    return render(request, 'schedule/protocol_summary.html', {'chart':chart})
예제 #5
0
def populateMasterDic(df,col,years,masterDic):
    for index in df.index:
        name=df['stockname'][index]
        boughtprice = df['boughtprice'][index]
        boughtamount = df['boughtamount'][index]
        
        data = fix_ticker_details_request(name, datetime.now()-timedelta(days=365*years), datetime.now())
        data = data[['Adj Close']]
        #make 21 day moving average
        data['21DayAvg'] = data['Adj Close'].rolling(21).mean().fillna(0)
        #make 100 day average
        data['100DayAvg'] = data['Adj Close'].rolling(100).mean().fillna(0)
        if not pd.isnull(boughtprice):
            bought = [boughtprice]*len(data.index)
            data = pd.DataFrame(data)
            data['bought'] = bought
        else:
            data = pd.DataFrame(data)
        content = serialize(data,render_to='chart'+str(index), title=name.upper()+' Stock',output_type='json')
        content = changeChartOptions(content)
        
        # get total purchase cost, etc
        stockPerformance = getStockPerformance(data,boughtamount,boughtprice)
        masterDic['chart'+str(index)] = {'stockmetrics':col[name],'highChartsDic':content,
                                           'performance':stockPerformance}
    return masterDic
예제 #6
0
def fp_yyz_sale_figure():
    # 读取csv数据
    df = pd.read_csv(os.getcwd() +
                     '/update_data/database/sql_yyz_sale_amount.csv',
                     nrows=60)
    # 小数转换为百分比,是否需要
    #for a, b in zip(['total', 'android', 'ios'], ['credit_cnt_total', 'credit_cnt_android', 'credit_cnt_ios']):
    #df[a + '_rate'] = (df[b] / df[a] * 100).apply(lambda x: format(x, ".4")).astype(
    #float)
    # 设置图表
    chart = serialize(df[[
        'sale_date', 'sale_amount'
    ]].head(30).sort_values('sale_date').rename(columns={'sale_date': '发售日期'}),
                      output_type='json',
                      x='发售日期',
                      title=u'月月涨销售量',
                      first_y_type='column')

    #chart1 = serialize(
    #df[['date', 'total_rate', 'android_rate', 'ios_rate']].head(30).sort_values('date').rename(
    #columns={'date': '注册日期', 'total_rate': 'total', 'android_rate': 'android', 'ios_rate': 'ios'
    #}),
    #output_type='json',
    #x='注册日期', title=u'app每日戳额率', first_y_type='line', tooltip={'valueSuffix': '%'}, ytitle="percentage")
    return render_template('financial_product_sale_yyz_figure.html',
                           chart=chart)
예제 #7
0
def macro_factors(div, library):
    factors = {
        'Risk on': ['Russell 2000', 'DAX'],
        'Quantitative Easing':
        ['Gold', 'German Bund', 'Gilts', 'US Treasuries 10 Yr'],
        'Emerging Markets':
        ['Copper', 'MXN', 'BRL', 'Ibovespa', 'Taiwan (SIMEX)'],
        'EU': ['DAX', 'FTSE 100', 'German Bund', 'Italian 10 year bonds'],
        'Energies': ['Crude', 'Rotterdam Coal', 'Natural Gas'],
        'Industrials':
        ['Copper', 'Rotterdam Coal', 'Crude', 'Shanghai  Rebar']
    }
    factor_data = pd.DataFrame()
    for f in factors.keys():
        df = pd.DataFrame()
        for m in factors[f]:
            try:
                df[m] = library.read(m).data.Price.replace(to_replace=0,
                                                           method='ffill')
            except:
                print m
        factor_data[f] = df.resample(
            rule='d', how='last').dropna(how='all').pct_change().mean(axis=1)
    lookback = 5
    zscores = (factor_data.cumsum() - pd.ewma(
        factor_data.cumsum(), 60)) / pd.ewmstd(factor_data.cumsum(), 60)
    y = zscores.tail(1).T.columns[0].year
    return serialize(zscores[str(y)].ffill(),
                     render_to=div,
                     title='Factors',
                     output_type='json')
예제 #8
0
def power(filename):
    """Return filename of plot of the damped_vibration function."""

    df = read_file(filename)

    labels = df.columns.tolist()

    data = serialize(df, render_to='power', title='',
                       output_type='dict')

    # data['subtitle'] = {'text': 'a subtitle here...'}
    data['plotOptions'] = {'spline': {
         'lineWidth': 2,
         'states': {
         'hover': {
         'lineWidth': 3}
         }}}
    data['chart']['type'] = 'line'
    data['chart']['zoomType'] = 'x'
    data['chart']['panning'] = True
    data['chart']['panKey'] = 'shift'

    result = 'new Highcharts.StockChart({});'.format(json_encode(data))

    return result
예제 #9
0
def zscore_ranked(div, library):
    lookback = 5
    markets = 3
    data = pd.DataFrame()
    for mkt in library.list_symbols():
        try:
            data[mkt] = library.read(mkt).data.Price
        except:
            print mkt
    zscores = (data - pd.ewma(data, 20)) / pd.ewmstd(data, 20)
    latest = zscores.tail(lookback)
    zscore_ranked = latest.T.sort_values(
        by=latest.T.columns[0]).dropna()[:markets]
    zscore_ranked = zscore_ranked.append(
        latest.T.sort_values(by=latest.T.columns[0]).dropna()[-markets:])
    final_data = pd.DataFrame()
    i = 1
    for d in zscore_ranked.columns:
        final_data['T+' + str(i)] = zscore_ranked[d]
        i = i + 1
    return serialize(final_data,
                     render_to=div,
                     kind="bar",
                     title="Noteable market moves",
                     output_type='json')
예제 #10
0
def datarate(filename):
    """Return filename of plot of the damped_vibration function."""

    df = read_file(filename)

    # add data volume columns
    for column in df.columns.values.tolist():
        if 'Accum' in column:
            instr = column[0]
            df[instr, 'Volume', 'Gbits'] = df[instr, 'Accum', 'Gbits'].sub(
                df[instr, 'Accum', 'Gbits'].shift(), fill_value=0)
    df = df.sort_index(axis=1)

    insts = ['BELA','ISA','MERMAG','MERTIS','MGNS','MIXS_SIXS',
             'PHEBUS','SERENA','SIMBIOSYS']

    # slice out a few specific dataframes
    df_insts_accum_gbits = {
        'data': df[insts].filter(like='Accum'),
        'title': ''}
    df_insts_volume_gbits = {
        'data': df[insts].filter(like='Volume'),
        'title': 'Data Rate [Gbit/s]'}
    df_insts_upload_kbitsps = {
        'data': df[insts].filter(like='Upload'),
        'title': ''}
    df_ssmm_accum_gbits = {
        'data': df.filter(like='SSMM').filter(like='Accum'),
        'title': ''}
    df_ssmm_volume_gbits = {
        'data': df.filter(like='SSMM').filter(like='Volume'),
        'title': ''}

    # select dataframe to use
    df = df_insts_volume_gbits

    labels = insts # df.columns.tolist()

    data = serialize(df['data'], render_to='datarate', title='',
                       output_type='dict')

    for x in data['series']:
        x['name'] = x['name'][0]

    # data['subtitle'] = {'text': 'a subtitle here...'}
    data['plotOptions'] = {'spline': {
         'lineWidth': 2,
         'states': {
         'hover': {
         'lineWidth': 3}
         }}}
    data['chart']['type'] = 'line'
    data['chart']['zoomType'] = 'x'
    data['chart']['panning'] = True
    data['chart']['panKey'] = 'shift'
    data['title']['text'] = df['title']

    result = 'new Highcharts.StockChart({});'.format(json_encode(data))

    return result
예제 #11
0
def compute_highcharts(A, b, w, T, resolution=10000):
    """Return filename of plot of the damped_vibration function."""
    t = linspace(0, T, resolution+1)
    u = damped_vibrations(t, A, b, T)
    d = {'t': t, 'u': u}
    df = pd.DataFrame(d)
    df.set_index('t', inplace=True)

    data = serialize(df, output_type='dict', chart_type='stock',
                      render_to='my-chart',
                      )

    data['chart']['type'] = 'line'
    data['chart']['zoomType'] = 'x'
    data['chart']['panning'] = True
    data['chart']['panKey'] = 'shift'
    data['chart']['plotBackgroundColor'] = '#FCFFC5'

    data["plotOptions"] = {
                "spline": {
                    "color": "#FF0000",
                    "lineWidth": 1,
                    "states": { "hover": { "lineWidth": 1 } },
                    "marker": {"enabled": True }
                }
            }

    chart = 'new Highcharts.Chart({});'.format(json_encode(data))

    return chart
예제 #12
0
	def return_number_of_messages_by_dayofweek_and_user(self, as_chart=False):

		m_by_day_user = self.df[['id_message','user_name']].copy()
		m_by_day_user.loc[:, 'day of the week'] = m_by_day_user.index.dayofweek
		m_by_day_user = m_by_day_user.groupby(['day of the week','user_name']).count().unstack().fillna(0)
 		m_by_day_user = m_by_day_user['id_message']
 		m_by_day_user.loc[:, 'Total'] = m_by_day_user.sum(axis=1)
		m_by_day_user.index = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

		if as_chart:
			config = serialize(m_by_day_user, kind='bar', title='Messages by Day of the Week and User',
							   output_type='json')

			config["yAxis"][0]["title"] = {"text": "# messages"}
			config["chart"]["marginTop"] = 70

			for k, v in config.iteritems():
				if k == "series":
					r = np.random.choice(len(v), 2, replace=False)
					for j, d in enumerate(v):
						if j not in r:
							config["series"][j]["visible"] = False

			return {'options':config, 'series':config['series']}
		else:
			return m_by_day_user
예제 #13
0
def index():
    chart = serialize(df,
                      render_to='my-chart',
                      output_type='json',
                      legend='None',
                      title='Trending Account Value(Daily)')
    return render_template('charts.html', chart=chart)
예제 #14
0
def compute_highcharts_simple(A, b, w, T, resolution=500):
    """Return filename of plot of the damped_vibration function."""
    t = linspace(0, T, resolution+1)
    u = damped_vibrations(t, A, b, T)
    d = {'t': t, 'u': u}
    df = pd.DataFrame(d)
    df.set_index('t', inplace=True)

    chart = serialize(df, chart_type='stock', render_to='my-chart',
                      output_type='json' )
    return chart
예제 #15
0
def get_chart_data(sites_arr, ctype, cperiod, agg_period, metric = "kwh"):
  readings, start_date, end_date = _get_readings(sites_arr, cperiod)
  op_arr, time_steps = _get_op_arr(readings, sites_arr, start_date, end_date, agg_period, metric)
  devices = Device.query.filter(Device.id.in_(sites_arr)).all()
  df = pd.DataFrame(op_arr, columns = [x.device_id for x in devices])
  df['time'] = [time_steps[i].strftime(OUTPUT_DATE_FORMAT) for i in range(len(time_steps) -1 )]
  df  = df.set_index('time')
  print(df.head())
  sd_str, ed_str = start_date.strftime(OUTPUT_DATE_FORMAT), end_date.strftime(OUTPUT_DATE_FORMAT)
  agg_str = agg_mapping[cperiod]
  chart = serialize(df, render_to = CHART_DIV_ID, title = "Average KwH between {} and {} for the {}".format(sd_str, ed_str, agg_str))
  return chart
예제 #16
0
def portfolio_comparison(div, library):
    portfolio = {'Treasuries ETF': .4, 'S&P 500 ETF': .6}
    final = pd.DataFrame()
    for m in portfolio.keys():
        final[m] = library.read(m).data.Close.resample(rule='m', how='last')
    weights = pd.Series(portfolio)
    data = final.resample(rule='m', how='last').pct_change() * weights
    final['60/40 Portfolio'] = (1 + data.sum(axis=1)).cumprod()
    return serialize(final.pct_change().cumsum(),
                     render_to=div,
                     title='Portfolios',
                     output_type='json')
예제 #17
0
def get_highchart(data):
    # print(data.head())
    # print(data.columns)
    data['date'] = data['created_at'].apply(get_date)
    # print(data.head())
    # print(data.tail())
    tweets_per_day = data.groupby('date').count()['id_str']
    print(tweets_per_day.describe())
    statistics = str(tweets_per_day.describe())

    return chart(serialize(pd.DataFrame(tweets_per_day), render_to='my-chart', \
                output_type='json', title='Tweets Per Day', \
                parse_dates='date', kind='bar', zoom='xy'), 'my-chart', statistics)
예제 #18
0
def equity_markets_charts(div, library):
    key_markets = ['FTSE 100', 'S&P 500', 'Russell 2000', 'EuroStoxx 50']
    df = pd.DataFrame()
    for mkt in key_markets:
        try:
            df[mkt] = library.read(mkt).data.Price
        except:
            print mkt
    data = df.ffill()['2016':] / df.ffill()['2016':].ix[0]
    return serialize(data,
                     render_to=div,
                     title='Equities YTD',
                     output_type='json')
예제 #19
0
파일: myplots.py 프로젝트: towshif/FlaskApp
def pd_data():
    df = pd.DataFrame(
        {
            'y': np.random.randn(10),
            'z': np.random.randn(10)
        },
        index=pd.period_range('1-2000', periods=10),
    )

    import pandas_highcharts
    from pandas_highcharts.core import serialize
    from pandas.compat import StringIO
    dat = """ts;A;B;C
    2015-01-01 00:00:00;27451873;29956800;113
    2015-01-01 01:00:00;20259882;17906600;76
    2015-01-01 02:00:00;11592256;12311600;48
    2015-01-01 03:00:00;11795562;11750100;50
    2015-01-01 04:00:00;9396718;10203900;43
    2015-01-01 05:00:00;14902826;14341100;53"""
    df = pd.read_csv(StringIO(dat), sep=';', index_col='ts', parse_dates='ts')

    # Basic line plot
    chart = serialize(df, render_to="my-chart", title="My Chart")
    # Basic column plot
    chart = serialize(df, render_to="my-chart", title="Test", kind="bar")
    # Basic column plot
    chart = serialize(df, render_to="my-chart", title="Test", kind="barh")
    # Plot C on secondary axis
    chart = serialize(df,
                      render_to="my-chart",
                      title="Test",
                      secondary_y=["C"])
    # Plot on a 1000x700 div
    chart = serialize(df,
                      render_to="my-chart",
                      title="Test",
                      figsize=(1000, 700))

    return html.format(chart)
예제 #20
0
	def return_share_of_messages_by_user(self, as_chart=False):

		share_by_user = self.df[['user_name','id_message']].groupby('user_name').count()
		total_num_messages = share_by_user['id_message'].sum()
		share_by_user['Share of Messages'] = 100.0 * share_by_user['id_message'] / total_num_messages
		share_by_user = share_by_user[['Share of Messages']]

		if as_chart:
			tooltip = {'pointFormat': '{series.name}: <b>{point.percentage:.1f}%</b>'}
			config = serialize(share_by_user, kind='pie', title='Share of Messages',
							   output_type='json', tooltip=tooltip)
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return share_by_user
예제 #21
0
	def return_number_of_messages_by_hour(self, as_chart=False):

		m_by_hour = self.df[['id_message']].copy()
		m_by_hour.loc[:, 'hour'] = m_by_hour.index.hour
		m_by_hour = m_by_hour.groupby('hour').count()
		
		if as_chart:
			config = serialize(m_by_hour, kind='line', title='Messages per Hour of the Day',
							   output_type='json')

			config["yAxis"][0]["title"] = {"text": "# messages"}
			config["series"][0]["name"] = "Messages"
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return m_by_hour
def register_cnt_figure():
    # 读取csv数据
    df = pd.read_csv(os.getcwd() + '/update_data/database/sql_sale_amout.csv',
                     nrows=60)
    # 小数转换为百分比,是否需要
    # for a, b in zip(['total', 'android', 'ios'], ['credit_cnt_total', 'credit_cnt_android', 'credit_cnt_ios']):
    #    df[a + '_rate'] = (df[b] / df[a] * 100).apply(lambda x: format(x, ".4")).astype(
    #    float)
    # 设置图表
    chart = serialize(df[[
        'sale_date', 'sale_amout'
    ]].head(30).sort_values('sale_date').rename(columns={'sale_date': '销售日期'}),
                      output_type='json',
                      x='销售日期',
                      title=u'彩虹计划销售量',
                      first_y_type='column')
예제 #23
0
	def return_emoticons_by_user(self, as_chart=False):

		e_by_user = pd.DataFrame({u.name:u.num_emoticons for u in self.chat.users}.items(), columns=['user', 'Number of Emoticons'])
		e_by_user = e_by_user.sort(['Number of Emoticons'], ascending=[1])
		e_by_user.set_index('user', inplace=True)

		if as_chart:
			config = serialize(e_by_user, kind='bar', title='Number of Emoticons',
							   output_type='json', rot=45)

			config["xAxis"]["title"]["text"] = "user"
			config["yAxis"][0]["labels"]["rotation"] = 0
			config["yAxis"][0]["title"] = {"text": "# emoticons"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return e_by_user
예제 #24
0
	def return_number_of_messages_by_week_and_year(self, as_chart=False):

		m_by_week_year = self.df[['id_message']].copy()
		m_by_week_year.loc[:, 'year'] = m_by_week_year.index.year
		m_by_week_year.loc[:, 'week'] = m_by_week_year.index.week
		m_by_week_year = m_by_week_year.groupby(['year', 'week']).count()

		if as_chart:
			config = serialize(m_by_week_year, kind='bar', title='Messages by Week and Year',
							   output_type='json', rot=45)
			config["yAxis"][0]["labels"]["rotation"] = 0
			config["series"][0]["name"] = "Messages"
			config["yAxis"][0]["title"] = {"text": "# messages"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return m_by_week_year
예제 #25
0
	def return_messages_by_user(self, as_chart=False):

		m_by_user = self.df[['user_name', 'id_message']].groupby('user_name').count()
		m_by_user['Number of Messages'] = m_by_user['id_message']
		m_by_user = m_by_user[['Number of Messages']].sort(['Number of Messages'], ascending=[0])

		if as_chart:
			config = serialize(m_by_user, kind='bar', title='Number of Messages',
							   output_type='json', rot=45)

			config["yAxis"][0]["labels"]["rotation"] = 0
			config["xAxis"]["title"]["text"] = "user"
			config["yAxis"][0]["title"] = {"text": "# messages"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return m_by_user
예제 #26
0
def commodity_markets_charts(div, library):
    df = pd.DataFrame()
    map = pd.read_csv(
        '/Users/mrefermat/git/FinancePhD/Practice/Flask_server/markets.csv',
        index_col='Market').to_dict()['Sector']
    for mkt in library.list_symbols():
        if map[mkt] == 'Commodities':
            try:
                df[mkt] = library.read(mkt).data.Price.replace(to_replace=0,
                                                               method='ffill')
            except:
                print mkt
    data = df.ffill()['2016':] / df.ffill()['2016':].ix[0]
    return serialize(data,
                     render_to=div,
                     title='Commodities YTD',
                     output_type='json')
예제 #27
0
def sector_ytd(div, library):
    data = pd.DataFrame()
    for m in library.list_symbols():
        if library.read_metadata(m).metadata['type'] == 'sector':
            data[m] = library.read(m).data.Close
    d = data.tail(1).T.columns[0]
    final = pd.DataFrame()
    final['MTD'] = (((data[str(d.year) + '-' + str(d.month)] /
                      data[str(d.year) + '-' + str(d.month)].ix[0]).tail(1)) -
                    1).T[d]
    final['YTD'] = (((data[str(d.year)] / data[str(d.year)].ix[0]).tail(1)) -
                    1).T[d]
    return serialize(final,
                     kind='bar',
                     render_to=div,
                     title='US Sector Performance',
                     output_type='json')
예제 #28
0
	def return_average_message_length_user(self, as_chart=False):

		average_message_length = [(u.name, self.return_avg_mess_length(u)) for u in self.chat.users]
		average_message_length = sorted(average_message_length, key=lambda elt: elt[1], reverse=True)

		m_avg_length = pd.DataFrame(average_message_length, columns=['user', 'Average Message Length (in words)'])
		m_avg_length.set_index('user', inplace=True)
		
		if as_chart:
			config = serialize(m_avg_length, kind='barh', title='Average Message Length (in words)',
							   output_type='json')

			config["xAxis"]["title"]["text"] = "user"
			config["yAxis"][0]["title"] = {"text": "average number words / message"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return m_avg_length
예제 #29
0
	def return_number_of_jajaja_by_user(self, as_chart=False):

		words = ["jaja", "haha", "jeje", "hehe", "hihi", "jiji", "lol"]
		word_count = [(u.name, self.return_num_messages_user_including_words(u, words)) for u in self.chat.users]
		word_count = sorted(word_count, key=lambda elt: elt[1], reverse=True)

		m_jajaja = pd.DataFrame(word_count, columns=['user', 'Number of hahaha'])
		m_jajaja.set_index('user', inplace=True)
		
		if as_chart:
			config = serialize(m_jajaja, kind='barh', title='Number of hahaha',
							   output_type='json')

			config["xAxis"]["title"]["text"] = "user"
			config["yAxis"][0]["title"] = {"text": "# hahaha"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return m_jajaja
예제 #30
0
파일: run.py 프로젝트: andmatt/pongr
def test_chart():
    import pandas as pd
    from pandas_highcharts.core import serialize
    from pandas.compat import StringIO
    dat = """ts;A;B;C
    2015-01-01 00:00:00;27451873;29956800;113
    2015-01-01 01:00:00;20259882;17906600;76
    2015-01-01 02:00:00;11592256;12311600;48
    2015-01-01 03:00:00;11795562;11750100;50
    2015-01-01 04:00:00;9396718;10203900;43
    2015-01-01 05:00:00;14902826;14341100;53"""
    df = pd.read_csv(StringIO(dat),
                     sep=';',
                     index_col='ts',
                     parse_dates=['ts'])

    # Basic line plot
    chart = serialize(df, render_to='my-chart', output_type='json')

    return render_template('test_chart.html', chart=chart)
예제 #31
0
	def return_ratio_media_messages_by_user(self, as_chart=False):

		media_by_user = self.df[self.df.isMedia == True][['user_name', 'isMedia']].groupby('user_name').count()
		message_by_user = self.df[['user_name', 'id_message']].groupby('user_name').count()
		message_by_user['Number of Media'] = media_by_user['isMedia']
		message_by_user.fillna(0, inplace=True)

		message_by_user['Percentage of Photo/Video Messages'] = 100.0 * message_by_user['Number of Media'] / message_by_user['id_message']
		message_by_user = message_by_user[['Percentage of Photo/Video Messages']].sort(['Percentage of Photo/Video Messages'], ascending=[0])
		message_by_user = np.round(message_by_user, decimals=2)

		if as_chart:
			tooltip = {'pointFormat': '{series.name}: <b>{point.y}%</b>'}
			config = serialize(message_by_user, kind='barh', title='Percentage of Messages that are Photos or Videos',
							   output_type='json', tooltip=tooltip)

			config["xAxis"]["title"]["text"] = "user"
			config["yAxis"][0]["title"] = {"text": "percentage of media messages"}
			config["chart"]["marginTop"] = 70
			return {'options':config, 'series':config['series']}
		else:
			return message_by_user
예제 #32
0
def waves(request):

    pathname = os.environ['HOME'] + \
    '/Dropbox/projects/BMOP/Processamento/dados/BMOBR06_CF2/op/'

    dd = pd.read_csv(pathname + 'Dados_BMOBR06.csv',
                     index_col='date',
                     parse_dates=True)

    # dd = dd.ix[-14*24:,:] # dd = dd['2016-06-24':]

    dd['Hs'] = dd.hs
    dd['Tp'] = dd.tp
    dd['Dp'] = dd.dp

    args = {'kind': 'line', 'zoom': 'xy', 'grid': 'on', 'output_type': 'json'}

    param = {
        'Hs': ['my-chart1', 'Altura Significativa - Hs'],
        'Tp': ['my-chart2', 'Período de Pico - Tp'],
        'Dp': ['my-chart3', 'Direção de Pico - Dp']
    }

    chart = {}

    for p in param:

        chart[p] = serialize(dd[[p]],
                             render_to=param[p][0],
                             title=param[p][1],
                             kind=args['kind'],
                             zoom=args['zoom'],
                             grid=args['grid'],
                             output_type=args['output_type'],
                             y_axis_title='teste')
    return render(request, 'personal/waves.html', chart)
예제 #33
0
def get_channel4():
    channel4_df = pd.DataFrame({'col': micro_volts[3]})
    return serialize(channel4_df, render_to='channel4', output_type='json')
예제 #34
0
파일: app.py 프로젝트: sudhu26/FinancePhD
def parse_data(data):
    x = serialize(data).split('series":')[1].split(',"yAxis":[{}]')[0]
    return x.split('}]')[0] + ',"type":"areaspline"}]'
예제 #35
0
def parse_data(data):
    return serialize(data).split('series":')[1].split(',"yA')[0]
예제 #36
0
    all_matches = new_df.fillna(0)
    print ("all_matches:", all_matches)
    all_matches['Date'] = all_matches['Date'].apply(pandas.to_datetime)
    all_matches = all_matches.set_index('Date')
    print ("all_matches:", all_matches)
    # and now the plotting
    time_chart = vincent.Line(all_matches[['sentiment', 'Close']])
    time_chart.axis_titles(x='Time', y='Value')
    time_chart.legend(title='Matches')
    time_chart.to_json('time_chart.json')

    # output sentiment
    print "Total tweets", len(lis)
    print "no. of positive ", p
    print "Positive ", float(p / cout) * 100, "%"
    print "Negative ", float(n / cout) * 100, "%"
    print "Neutral ", float(net / len(lis)) * 100, "%"
    # print lis
    # determine if sentiment is positive, negative, or neutral

    # output sentiment
    # print sentiment

    #ax = plt.gca()
    #ax.invert_xaxis()
    #plt.show()

    #highcharts
    df = all_matches  # create your dataframe here
    chart = serialize(df, render_to='container',  output_type='json')
예제 #37
0
파일: app.py 프로젝트: yhomas/pandas
def index():
    df = mainaction()
    chart = ph.serialize(df, render_to='my-chart', output_type='json')
    return template("charts.tpl", chart=chart)
예제 #38
0
import pandas as pd
from pandas_highcharts.core import serialize
from pandas.compat import StringIO

dat = """ts;A;C
2015-01-01 00:00:00;27451873;29956800;113"""

df = pd.read_csv(StringIO(dat), sep=';', index_col='ts', parse_dates='ts')

chart = serialize(df, render_to="my-chart", title="Test", kind="bar")
예제 #39
0
def gen_highcharts_json(data,
                        title,
                        x_axis=None,
                        kind='line',
                        pandas_highcharts=True):

    if pandas_highcharts:
        json = serialize(data,
                         output_type='json',
                         title=title,
                         kind=kind,
                         fontsize='12',
                         grid=True,
                         legend=False)
    else:
        # define index type
        print(data)
        print(data.index)
        print(data.index.dtype)
        if data.index.dtype == 'datetime64[ns]':
            x_axis_type = 'datetime'
        else:
            x_axis_type = 'category'

        print(x_axis_type)

        json = """{
	title: {
		text: '""" + title + """'
	},
	xAxis: {
		type: '""" + x_axis_type + """'
	},
	yAxis: {
		title: {
			text: '""" + title + """'
		}
	},
	legend: {
		enabled: false
	},
	credits: false,
	plotOptions: {
	    line: {
	        marker: {
	        	enabled: null,
	            radius: 3
	        },
	        lineWidth: 2,
	        states: {
	            hover: {
	                lineWidth: 2
	            }
	        },
	        threshold: null
	    }
    },
	series: [{
		type : '""" + kind + """',
		data: ["""
        for index, value in data.iteritems():
            if x_axis_type == 'datetime':
                json += '[Date.UTC({}, {}, {}),{}],'.format(
                    str(index)[0:4],
                    str(index)[5:7],
                    str(index)[8:10], value)
            else:
                json += '["{}",{}],'.format(str(index), value)
        json = json[:-1]
        json += """]
	}]
}
	"""

    print(json)

    return json
예제 #40
0
            # run the first function and get the DataFrame
            last_frame = expression[0].process(start, end, DataFrame())

            for i in range(1, len(expression), 2):
                conn = expression[i]
                fun = expression[i+1]

                if not isinstance(fun, QueryFunction):
                    raise ValueError('NON-QUERY FUNCTION: ' + str(fun))

                print('RUNNING: ' + str(fun))

                cur_frame = fun.process(start, end, last_frame)

                if conn == '>|': # combine the two
                    last_frame = last_frame.combine_first(cur_frame)
                else:
                    last_frame = cur_frame

                i += 2

            print("RES:")
            print(str(last_frame.head()))
            print("...")
            print(str(last_frame.tail()))

            chart = serialize(last_frame, render_to='my-chart', output_type='json')

            print(chart)