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

复制
相关文章
springboot上传文件显示上传进度[通俗易懂]
原文链接:https://blog.csdn.net/FurtherSkyQ/article/details/98200965
全栈程序员站长
2022/09/05
2.2K0
实用:如何将aop中的pointcut值从配置文件中读取
改造老项目,须要加一个aop来拦截所的web Controller请求做一些处理,由于老项目比较多,且包的命名也不统一,又不想每个项目都copy一份相同的代码,这样会导致后以后升级很麻烦,不利于维护。于是我们想做成一个统一的jar包来给各项目引用,这样每个项目只须要引用该jar,然后配置对应的切面值就可以了。
Bug开发工程师
2019/12/09
24.4K1
文件上传测试:Windows 创建指定大小的文件
『我们测试文件上传时需要上传指定大小的文件,Windows 如何创建指定大小的文件,有比较便捷的操作方法吗 ?』
程序媛淼淼
2022/12/07
1.7K0
文件上传测试:Windows 创建指定大小的文件
Django 中图片的上传及显示
在 Django 中,上传文件不同于普通服务器的上传方法,在普通服务器中只需要使用一个 Controller 来控制文件的上传即可完成,但是在 Django 中,则需要额外使用数据库资源来存储文件。本文将说明如何使用 Django 接收、保存并且返回图片。
Kindem
2022/08/12
3.5K0
如何从xml文件创建R语言数据框dataframe
从这个XML文件中,我想创建一个具有ID,name 列的R数据框。请注意,name和ID应包含变量的所有级别。
拓端
2020/11/03
3.6K0
如何从xml文件创建R语言数据框dataframe
如何从xml文件创建R语言数据框dataframe
从这个XML文件中,我想创建一个具有ID,name 列的R数据框。请注意,name和ID应包含变量的所有级别。
拓端
2020/10/24
3.4K0
如何从xml文件创建R语言数据框dataframe
从这个XML文件中,我想创建一个具有ID,name 列的R数据框。请注意,name和ID应包含变量的所有级别。
拓端
2020/10/24
3.6K0
计算上传文件的存放路径
文件上传至服务器中,服务器分成多级文件夹来存放,一种情况是使用当前日期来区分文件夹,一种就是可以用hashcode来区分,就是上面的代码。
HUC思梦
2020/09/03
1.4K0
GitHub 如何从特定的版本中创建分支
在 Git 的操作中,我们可能需要从特定的版本中创建分支。 首先需要的第一步是活的当前项目的提交历史列表。 然后在特定的版本后,选择 <> 标记,进入这个版本的提交历史。 在左上角上,选择提交历史。 在弹出的对话框中输入分支名称。 在你输入名称后,将会提示你创建分支。 这个的意思是从当前的提交版本中创建一个分支。 然后可以从上面的提交中创建一个分支。 在创建完成后,可以从分支列表中查看创建的分支列表。 https://www.ossez.com/t/github/13414
HoneyMoose
2021/04/02
7.2K0
GitHub 如何从特定的版本中创建分支
SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
bear_fish
2018/09/19
2.7K0
SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
五、eclipse如何创建一个ftl(FreeMarker)的文件和设置ftl文件的显示风格(ftl文件高亮显示)
然后选中你创建的HTML文件,按下F2,对文件进行重命名,修改后缀名为ftl,然后一直点击ok
全栈程序员站长
2022/07/05
3.1K0
五、eclipse如何创建一个ftl(FreeMarker)的文件和设置ftl文件的显示风格(ftl文件高亮显示)
ASP.NET Core中如何更改文件上传大小限制maxAllowedContentLength属性值
Web.config中的maxAllowedContentLength这个属性可以用来设置Http的Post类型请求可以提交的最大数据量,超过这个数据量的Http请求ASP.NET Core会拒绝并报错,由于ASP.NET Core的项目文件中取消了Web.config文件,所以我们无法直接在visual studio的解决方案目录中再来设置maxAllowedContentLength的属性值。
跟着阿笨一起玩NET
2021/06/09
5K0
ASP.NET Core中如何更改文件上传大小限制maxAllowedContentLength属性值
视频中的 I 帧,P 帧,B 帧
视频传输原理 视频是由一幅幅帧图像和一组音频构成的,视频的播放过程可以简单理解为一帧帧的画面按照时间顺序呈现出来的过程。但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大。这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。 编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) 如下图, 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。GO
用户1097444
2022/06/29
3.8K0
视频中的 I 帧,P 帧,B 帧
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。
很酷的站长
2023/08/11
1.4K0
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
如何让数据值在PBI中智能化显示 - 效果
大部分的产品的年销售额都是几十万规模,用英文规范显示,就是多少 K ,而总计则超过了百万,则应该显示为 M。
BI佐罗
2021/10/22
4.1K0
如何让数据值在PBI中智能化显示 - 效果
Flask中的AJAX文件上传
表单: <form method="post" enctype=multipart/form-data id='form1'> <input class="form-control" id="image" name="image" required type="file"> <button type="submit" class="btn btn-default" id='submit1'>提交</button> </form> JS: <script> $('#image').change
YingJoy_
2018/09/14
2.8K0
​ 如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?
AU上传ipa出现下图红框提示说明成功上传,但有时App Store后台没有出现构建版本,请查看下面详细说明!
iOS程序应用
2023/04/17
1.1K0
​  如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?
​ 如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?
AU上传ipa出现下图红框提示说明成功上传,但有时App Store后台没有出现构建版本,请查看下面详细说明!
爱学iOS的小麦子
2023/04/07
3.3K0
点击加载更多

相似问题

如何从日志文件中的值创建数据帧?

125

计算值并创建新的数据帧

30

如何从函数中计算的已保存数据创建数据帧

111

如何根据其他数据帧计算数据帧中的缺失值

111

如何从数据帧创建.kml文件?

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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