Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何显示从文件上传创建的数据帧中的计算值?

如何显示从文件上传创建的数据帧中的计算值?
EN

Stack Overflow用户
提问于 2020-06-11 09:18:22
回答 1查看 1.2K关注 0票数 0

Pandas数据框架中有以下数据:

代码语言:javascript
运行
AI代码解释
复制
     df = pd.DataFrame({'Make':['Mercedes', 'BMW', 'Mercedes', 'Mercedes', 'Chrysler', 'Chrysler', 'Chrysler', 'Chrysler', 'BMW', 'Chrysler', 'BMW', 'Mercedes', 'BMW', 'Mercedes'],
                          'Dimension':['Styling', 'Styling', 'Price', 'Styling', 'MPG', 'MPG', 'Styling', 'Styling', 'MPG', 'MPG', 'Price', 'Price', 'Styling', 'MPG'],
                          'Country':['USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA', 'England', 'Germany', 'USA', 'Germany', 'Poland', 'Italy', 'USA'],
                          'LowValue':['64', '61', '70', '65', '59', '68', '63', '57', '58', '55', '69', '63', '69', '61'],
                          'HighValue':['82', '95', '93', '95', '87', '93', '85', '85', '95', '92', '83', '87', '80', '80']})

我正在使用Plotly Dash框架构建一个web应用程序。该应用程序允许用户上传文件并在屏幕上呈现内容。我想显示一些关于上传文件时创建的Pandas数据框架的简要统计信息。

下面是上传文件并呈现应用程序的代码:

代码语言:javascript
运行
AI代码解释
复制
import base64
import dash
from dash.dependencies import Input, Output, State
import dash_html_components as html
import dash_core_components as dcc
import dash_table
import datetime
from datetime import datetime as dt
import io
import os
import pandas as pd
import re


# initialize the application
app = dash.Dash()

# define the layout of the app
app.layout = html.Div([

    html.Div([
        dcc.Upload(
            id='upload-data',
            children=html.Div([
                'Drag and Drop or ',
                html.A('Select Files')
            ]),
            style={
            'width' : '50%',
            'height' : '60px',
            'lineHeight' : '60px',
            'borderWidth' : '1px',
            'borderStyle' : 'dashed',
            'borderRadius' : '5px',
            'textAlign' : 'center',
            'marginTop' : '10px',
            'marginRight' : '10px',
            'marginBottom' : '50px',
            'marginLeft' : '300px',
            'color' : '#87ceeb'
            },
            multiple=True
            ),
        html.Div(id='output-data-upload'),
        ]),

])


def parse_contents(contents, filename, date):
    content_type, content_string = contents.split(',')

    decoded = base64.b64decode(content_string)
    try:
        if 'csv' in filename:
            # assume that the user uploaded a CSV file
            df = pd.read_csv(
                io.StringIO(decoded.decode('utf-8')))
        elif 'xls' in filename:
            # assume that the user uploaded an Excel file
            df = pd.read_excel(io.BytesIO(decoded))
        elif 'txt' or 'tsv' in filename:
            # assume that the user uploaded a TXT file
            df = pd.read_csv(io.StringIO(decoded.decode('utf-8')), delimiter = r'\s+')
    except Exception as e:
        print(e)
        return html.Div([
            'There was an error processing this file.'
            ])

    # transform the original data frame to get the average of low value for Styling
    df_new = df[(df['Dimension'] == 'Styling')]
    df_new['LowValue'] = pd.to_numeric(df_new['LowValue'])
    mean_of_low_value = df_new['LowValue'].mean()

    return html.Div([
        html.H5(filename),
        html.H6(datetime.datetime.fromtimestamp(date)),

        dash_table.DataTable(
            id='table',
            columns=[{'name': i, 'id': i} for i in df.columns],
            data=df.to_dict('records'),
            sort_action='native',
            filter_action='native',
            page_size= 5,
            style_table={'height' : '300px',
                         'overflowY' : 'auto'},
            style_cell={'width' : '300px',
                        'height' : '30px',
                        'textAlign' : 'left'}
            ),

])



@app.callback(Output('output-data-upload', 'children'),
    [Input('upload-data', 'contents')],
    [State('upload-data', 'filename'),
     State('upload-data', 'last_modified')])
def update_output(list_of_contents, list_of_names, list_of_dates):
    if list_of_contents is not None:
        children = [
            parse_contents(c, n, d) for c, n, d in
            zip(list_of_contents, list_of_names, list_of_dates)]
        return children


if __name__ == '__main__':
    app.run_server(debug = True, use_reloader=True)

上传文件时会创建一个df对象。然后,我操作df以获得StylingLow分数的平均值。

使用此数据集,mean_of_low_value variable为63.1666。

问题:如何在屏幕上显示以下内容?

平均造型分数为:63.1666分

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 12:19:41

您可以创建一个新组件(如html.Div()html.H1()html.P()等)。然后在children属性中包含转换为字符串的文本和数值,如

代码语言:javascript
运行
AI代码解释
复制
html.Div(children=['The average Styling score is: ' + str(mean_of_low_value)]),

或者,如果您想舍入值(假设为2位数)

代码语言:javascript
运行
AI代码解释
复制
html.Div(children=['The average (rounded) Styling score is: ' + format(mean_of_low_value, '.2f')]

我更新了您的代码(复制如下),以包括上述两个示例。

代码语言:javascript
运行
AI代码解释
复制
import base64
import dash
from dash.dependencies import Input, Output, State
import dash_html_components as html
import dash_core_components as dcc
import dash_table
import datetime
from datetime import datetime as dt
import io
import os
import pandas as pd
import re

# initialize the application
app = dash.Dash()

# define the layout of the app
app.layout = html.Div([

    html.Div([
        dcc.Upload(
            id='upload-data',
            children=html.Div([
                'Drag and Drop or ',
                html.A('Select Files')
            ]),
            style={
            'width' : '50%',
            'height' : '60px',
            'lineHeight' : '60px',
            'borderWidth' : '1px',
            'borderStyle' : 'dashed',
            'borderRadius' : '5px',
            'textAlign' : 'center',
            'marginTop' : '10px',
            'marginRight' : '10px',
            'marginBottom' : '50px',
            'marginLeft' : '300px',
            'color' : '#87ceeb'
            },
            multiple=True
            ),
        html.Div(id='output-data-upload'),
        ]),

])


def parse_contents(contents, filename, date):

    content_type, content_string = contents.split(',')

    decoded = base64.b64decode(content_string)
    try:
        if 'csv' in filename:
            # assume that the user uploaded a CSV file
            df = pd.read_csv(
                io.StringIO(decoded.decode('utf-8')))
        elif 'xls' in filename:
            # assume that the user uploaded an Excel file
            df = pd.read_excel(io.BytesIO(decoded))
        elif 'txt' or 'tsv' in filename:
            # assume that the user uploaded a TXT file
            df = pd.read_csv(io.StringIO(decoded.decode('utf-8')), delimiter = r'\s+')
    except Exception as e:
        print(e)
        return html.Div([
            'There was an error processing this file.'
            ])

    # transform the original data frame to get the average of low value for Styling
    df_new = df[(df['Dimension'] == 'Styling')]
    df_new['LowValue'] = pd.to_numeric(df_new['LowValue'])
    mean_of_low_value = df_new['LowValue'].mean()

    return html.Div([

        html.H5(filename),
        html.H6(datetime.datetime.fromtimestamp(date)),

        dash_table.DataTable(
            id='table',
            columns=[{'name': i, 'id': i} for i in df.columns],
            data=df.to_dict('records'),
            sort_action='native',
            filter_action='native',
            page_size= 5,
            style_table={'height' : '300px',
                         'overflowY' : 'auto'},
            style_cell={'width' : '300px',
                        'height' : '30px',
                        'textAlign' : 'left'}
            ),

        html.Div(children=['The average Styling score is: ' + str(mean_of_low_value)]),

        html.Div(children=['The average (rounded) Styling score is: ' + format(mean_of_low_value, '.2f')]),

])


@app.callback(Output('output-data-upload', 'children'),
    [Input('upload-data', 'contents')],
    [State('upload-data', 'filename'),
     State('upload-data', 'last_modified')])
def update_output(list_of_contents, list_of_names, list_of_dates):
    if list_of_contents is not None:
        children = [
            parse_contents(c, n, d) for c, n, d in
            zip(list_of_contents, list_of_names, list_of_dates)]
        return children


if __name__ == '__main__':
    app.run_server(debug = True, use_reloader=True)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62329948

复制
相关文章
Erlang语言不是用来解决所有问题的语言
Erlang应用场合 未来的计算是并发计算。现今甚至桌面CPU也是多核的,当用户给服务器购买了越来越多的CPU时,他们更期望能最大限度地利用他们的新投资,但是今天的许多软件系统并不能很好地做到这一点。 整个软件行业也在发生重大变革,由卖工具软件转向卖服务(软件免费,这也是开源软件兴起的过程),由单纯客户端向B/S或C/S转化,相应的存储和计 算向服务器端转移,由原来的PC客户端向客户端多元化(如手机、PDA、电视机顶盒等)转化。这些变革趋势,使得用户可以更方便地访问到服务的同时,服务 器也要承受越来越高的负荷,并行/分布的需求逐渐增加。 Erlang语言不是用来解决所有问题的语言,至少现在还不是。Erlang最初专门为通信应用设计的,比如控制交换机或者变换协议等,非常适合于构 建分布式,实时软并行计算系统。它是一门专注的语言,可以适应现代服务器要求高负荷、高可靠、持续服务的需求。它要解决的问题域包括:高并发、分布式、持 续服务、热升级和高可靠等问题。 Erlang应用实例 典型的Erlang应用是由很多被分配不同任务的“节点(Node)”组成的“集群 (Cluster)”。一个Erlang节点就是一个Erlang虚拟机的实例,用户可以在一台机器(服务器、台式机或者笔记本)上运行多个节点。 Erlang节点自动跟踪所有连接着的其他节点。要添加一个节点仅仅需要将其指向任何一个已建节点就可以了。只要这两个节点建立了连接,所有其他节点马上 就会感应到新加入的节点。Erlang进程使用进程ID向其他进程传递报文,进程ID包含着运行此进程的节点信息。因此进程不需要理会正在与其交流的其他 进程实际在何处运行。一组相互连接的Erlang节点可以看作是一个网格计算体或者一台超级计算机。 erlang的odbc应用程序结构图 Yaws是一个Erlang写的Web服务器。ErLang本身带有一个HTTP Server,叫做inet。Yaws对于inet,就相当于Servlet对于Http Server。Yaws也可说是一个Web开发框架,Yaws的ehtml类似于jsp、 php、ruby template。Yaws并发能力是Apache的15倍,有人利用16台集群服务器所做的显示,Yaws可以承受超八万并发活动,Apache在四千 就宕机了。 erlang和ruby的简单测试 Ejabberd也是Erlang很好的应用实例,也是目前可扩展性最好的一种 Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个集群运作。Ejabberd基于ErLang+ Mnesia构建,项目已成功发展5年,占据30%左右Jabber服务器市场。 Tsung则是多协议分布式压力测试工具,可用于测试Http、Soap、Postgresql和Jabber/XMPP服务器。而Wings则是一个3D建模程序,软件支持Windows、Mac OSX和Linux等操作系统,这两个项目都基于Erlang构建。 Erlang将会成为一个非常重要的语言。如果有了大公司的支持,它甚至可能成为下一个Java。因为它是个开源项目,非常适合多核处理、Web服务等领域。事实上,它也是编写在多核机器上运行的高可靠性系统的唯一成熟语言。 Erlang始于20年前,是一个并发性Prolog,Joe Armstrong创造了它。第一个大型Erlang项目是一个由几百人创建的电信交换系统,系统有数百万行代码。系统主要关注的就是可靠性,并且系统有 难以置信的可靠性历史。据Joe介绍,“它有99.9999999%的可靠性”。 这意味着每10亿秒才有1秒宕机时间,或者说10亿分钟有1分钟宕机时间。十亿秒大概是30年,10亿分钟大概有2000年。99.999% 的可靠性大概是每年宕机5分钟,这已经是很好的了。了解可靠性的人都知道,可靠性系统有 99.9999%的,甚至99.99999%的,但是估计没听过有99.9999999%可靠性的,可基于Erlang的系统实现了。 但这还不是令Erlang壮大的理由,因为不是什么人都关注可靠性。也不是因为 Erlang是一个函数式语言,更不是并行Erlang是个面向对象语言。其发展迅速的主要原因是唯一一个有可靠实现和完善类库的成熟的并行开发语言,在 不久的将来所有的桌面系统、笔记本电脑都将是多核的,而要让程序在多核上更快的运行就要使程序能充分利用多核处理的能力。 Erlang带有一组类库。多数类库是用于构建各类Internet服务的。 Erlang有Web服务器和数据库。Erlang社区认为它是构建可靠Web服务器和Web服务的首选语言。Erlang是一个构建可靠系统的框架/平 台,它构建的平台可以持续运行而无需关闭,可以每天更新软件,甚至可以定期的更换硬件。这些特性是电信应用所需要的,它还是在线银行、
用户7705674
2021/10/06
1.1K0
在Windows上运行单节点的Cassandra
Cassandra可以安裝在很多系统上, 我是安装在windows server 2008 R2上,安装相当简单,只要把下载下来的压缩包解压缩放到一个目录下就可以了,这里主要是记录下使用体验: Cassandra官网: http://cassandra.apache.org/,下载页面 http://cassandra.apache.org/download/ Cassandra用java开发的,要求安装JVM 1.6以上,推荐 Version 6 Update 23  到Java官网下载 http://w
张善友
2018/01/19
2.4K0
在Windows上运行单节点的Cassandra
在 Ubuntu Linux 上安装最新的 Erlang
Erlang 在 Ubuntu 的 Universe 仓库 中可用。启用该仓库后,你可以使用下面的命令轻松安装它:
用户8965210
2021/09/27
2.9K0
Elixir: 编程语言的未来
这篇文章谈一谈最近火爆的 Elixir,同时说一下对编程语言选择的看法。同时作为 Erlang 发烧友,Elixir 不可不提。即使有了那么多编程语言 Elixir 也值得接触。本文主要分为以下四块内
时见疏星
2018/06/01
3K0
Erlang 01 - 子进程规范
子进程规范是一个用于描述监督者管理的进程的元组. 对于大多数监督者而言, 子进程会随监督者的启动而启动, 并在监督者的生命周期结束时退出. 对于单个需要监督的进程, init/1函数给出的描述如下:
Reck Zhang
2021/08/11
1.1K0
在较小内存的机器上运行Elasticsearch与Kibana
因为穷,只买得起1G内存的乞丐配置版的云服务器,但是又想玩玩Elasticsearch+Kibana。而Elasticsearch默认的heap size就是1G,很容易卡死,因此需要手动修改一下配置。
dandelion1990
2019/07/16
5.2K0
[答疑]人翻书,翻书的操作是在人上还是书上
我有个问题,有个类书,一个类人,现在人想翻书,那么翻这个方法是放在书的类上,还是人的类上
用户6288414
2019/09/23
7280
[答疑]人翻书,翻书的操作是在人上还是书上
Struts2的Action是单例还是多例 / SpringMVC的controller默认是单例还是多例?
根据文章,Struts2的Action是单例模式,而SpringMVC的Controller默认是单例模式。单例模式可以提高SpringMVC性能,不需要每次相应请求都创建一个对象。然而,在特殊情况下,需要在Controller类定义属性时,单例肯定会出现竞争访问,需要将单例改为多例模式。在Spring整合Struts2开发时,如果需要用使用Struts2多例,就在spring的action bean配置的时候设置scope=\"prototype\"。
程裕强
2018/01/02
1.9K0
Ruby vs Elixir | 2022 该选哪个?
Ruby 和 Ruby on Rails 可能并不需要过多的介绍,因为它们已经被广泛的应用在 Web 开发领域。
RiemannHypothesis
2022/09/28
1.7K0
工业互联网爆火的背后,是顺势而为还是逆流而上?
工业互联网是互联网和新一代信息技术在工业全领域、全产业链、全价值链中的融合集成应用,是实现工业智能化的综合信息基础设施。
SDNLAB
2020/04/16
4520
这有“三高一快零故障”网络架构实践,还有掉坑逃生指南
内容来源:2017 年 11 月 04 日,中兴高级系统架构师魏猷君在“2017厦门软件技术峰会”进行《高可靠性网络架构实践》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
IT大咖说
2018/07/30
7810
这有“三高一快零故障”网络架构实践,还有掉坑逃生指南
View Merge 在安全控制上的变化,是 BUG 还是增强 ?
什么是 View Merge View Merge 是 12C 引入的新特性,也是一种优化手段。当查询中引用了 View 或 inline view 时,优化器可以将主查询中的查询条件并入视图当中去进行优化选择以获得代价最小的执行计划。而如果视图不属于当前执行语句的用户,View Merge 就可能存在潜在 OPTIMIZER_SECURE_VIEW_MERGING(默认是 TRUE)控制。当执行语句的用户缺乏对视图的 MERGE VIEW 权限,也没有 MERGE ANY VIEW 权限时,是否允许优化器
数据和云
2018/03/29
7620
检查高 CPU 进程在 Linux 上运行时间的脚本
给 long-running-cpu-proc.sh 设置可执行的 Linux 文件权限。
用户4988085
2021/09/15
2.2K0
View Merge 在安全控制上的变化,是 BUG 还是增强 ?
View Merge 是 12C 引入的新特性,也是一种优化手段。当查询中引用了 View 或 inline view 时,优化器可以将主查询中的查询条件并入视图当中去进行优化选择以获得代价最小的执行计划。而如果视图不属于当前执行语句的用户,View Merge 就可能存在潜在 OPTIMIZER_SECURE_VIEW_MERGING(默认是 TRUE)控制。当执行语句的用户缺乏对视图的 MERGE VIEW 权限,也没有 MERGE ANY VIEW 权限时,是否允许优化器进行 View Merge 优化。
数据和云01
2019/05/26
5550
在一台机器上配置 redis 哨兵模式
最后要检查服务器防火墙有没有开放这些端口 6379, 6380, 6381, 26379, 26380, 26381
北漂的我
2021/01/18
1.6K0
Erlang设计原则Behaviour
ChildSpec参数{Id, StartFunc, Restart, Shutdown, Type, Modules}
职场亮哥
2020/10/10
7650
数据中台是真火还是炒作?
马云老师在2019年说了一段话,“很多人会把数据比作石油,我们现在搭建的数据中台,就是希望扮演发电厂的角色”,这一段话,现在被大众认为是“数据中台”这个概念的起源。
凯哥
2020/01/17
8600
数据中台是真火还是炒作?
从 10 Gb 到 40 Gb,从百万级到千万级转发,打造高性能 TGW
腾讯架构师
2017/09/08
6.5K1
从 10 Gb 到 40 Gb,从百万级到千万级转发,打造高性能 TGW
小程序可以打破平台限制在硬件设备上运行吗?
在小程序技术日益成熟、生态日益善的前景下,运营者们发现小程序“即用即走、轻量开发”的特点非常契合各种硬件设备的使用场景;开发者们对“一次开发,多端运行”的诉求也变得越来越强烈。
用户10245619
2023/01/11
7790
用 abstract unix socket 实现进程单实例运行
http://stackoverflow.com/questions/2964391/preventing-multiple-process-instances-on-linux
byronhe
2021/06/25
1.3K0

相似问题

如何根据类的基数对个体进行分类

14

如何在excel中根据条件对值进行分类

10

如何根据某一条件对组进行小计

22

根据条件对特定行数进行平均

12

根据其他数据集的条件对变量进行分类

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档