小编kms*_*kms的帖子

基于部分匹配合并两个pandas DataFrame

两个 DataFrame 的城市名称格式不同。我想对两个 DataFrame 中的geo字段之间的所有部分字符串匹配进行左外连接和拉取字段City

import pandas as pd

df1 = pd.DataFrame({
                    'City': ['San Francisco, CA','Oakland, CA'], 
                    'Val': [1,2]
                  })

df2 = pd.DataFrame({
                    'City': ['San Francisco-Oakland, CA','Salinas, CA'], 
                    'Geo': ['geo1','geo2']
                  })
Run Code Online (Sandbox Code Playgroud)

加入后预计DataFrame

 City                   Val   Geo

 San Francisco, CA      1     geo1
 Oakland, CA            2     geo1
Run Code Online (Sandbox Code Playgroud)

python pandas

16
推荐指数
2
解决办法
4120
查看次数

Dash 应用程序中数据表值发生变化后回调触发的绘图更新

我的布局中有一个地图和数据表组件,可以通过回调进行更新。数据表是可编辑的,用户可以向新表添加新信息。更新表的点击事件时

我有两个回调,一个用于更新地图,另一个用于数据表。我想做的是从数据表回调内部运行地图回调。基本上,我想根据数据表的值更新地图。

我可以从回调运行另一个回调或在另一个回调中运行某些代码行吗?试图找出一种优雅而有效的方法来做到这一点。

layout = html.Div([

                # Plot map
                dcc.Graph(id="map-graph"),

                # DataTable
                dash_table.DataTable(

                    id="table",

                    columns=[{"id":"Type","name":"Type"},
                                   {"id":"space","name": "space"}],

                    sort_action="native",
                    filter_action="native",
                    row_deletable=True
                ),

                # Update map
                dbc.Button("Update map", id="update-map", className="mr-1"),

                # Update Table
                dbc.Button("Update table", id="update-table", className="mr-1")

 
            ]), 


     # Callbacks 

    # Update map
    @app.callback(Output("map-graph", "figure"),
                          [Input("update-map", "value")])
    def updatemap(value):

         ...
         do something
         ...

         return value

 
    # Update table
    @app.callback(Output("table", "data"),
                          [Input("update-table", "value")])
    def updatetable(value):

         ...
         do something
         ...

         # Run the code inside previous callback which updates the map. 

         return rows
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-dash plotly-dash-datatable

7
推荐指数
1
解决办法
1万
查看次数

Plotly:如何使用 DASH 回调将多项式拟合线添加到 plotly go.scatter 图?

我想向使用回调呈现的散点图添加多项式曲线。

以下是我的回调函数,它返回散点图。

@app.callback(Output('price-graph', 'figure'),
              [
                 Input('select', 'value')
              ]
             )
def update_price(sub):

    if sub:

        fig1 = go.Figure(

            data=[go.Scatter(

                            x=dff['Count'],
                            y=dff['Rent'],
                            mode='markers'

                            )
                  ],

            layout=go.Layout(

                title='',

                xaxis=dict(
                    tickfont=dict(family='Rockwell', color='crimson', size=14)
                ),

                yaxis=dict(

                    showticklabels = True

                ),

            )
        )

        return fig1
Run Code Online (Sandbox Code Playgroud)

结果图:

在此处输入图片说明

我可以使用sklearn.preprocessing.

from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline


dff = df.groupby(['Rent']).size().reset_index(name='Count')

fig = plt.figure(figsize=(15,8)) 

x = dff['Count']
y = dff['Rent']

model = make_pipeline(PolynomialFeatures(4), LinearRegression())
model.fit(np.array(x).reshape(-1, 1), y)
x_reg = np.arange(90)
y_reg = model.predict(x_reg.reshape(-1, 1)) …
Run Code Online (Sandbox Code Playgroud)

python plotly polynomials plotly-dash plotly.js

5
推荐指数
1
解决办法
804
查看次数

用户警告:几何图形位于地理 CRS 中。 “缓冲区”的结果可能不正确

我正在创建 geopandas 数据帧并创建一个缓冲区以便能够进行空间连接。我为 DataFrame 设置了crs,然后继续创建缓冲区并遇到警告。

df1 = gpd.GeoDataFrame(df1, geometry=gpd.points_from_xy(df1['Long'], df1['Lat']))
# set crs for buffer calculations
df1.geometry.set_crs('EPSG:4326', inplace=True)

df2 = gpd.GeoDataFrame(df2, geometry=gpd.points_from_xy(df2['Long'], df2['Lat']))
# set crs for buffer calculations
df2.geometry.set_crs('EPSG:4326', inplace=True)

# Returns a geoseries of geometries representing all points within a given distance
df1['geometry'] = df2.geometry.buffer(0.001)
Run Code Online (Sandbox Code Playgroud)

用户警告:

/var/folders/d0/gnksqzwn2fn46fjgrkp6045c0000gn/T/ipykernel_5601/4150826928.py:10: UserWarning: Geometry is in a geographic CRS. Results from 'buffer' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.

  df1['geometry'] = df2.geometry.buffer(0.001)
Run Code Online (Sandbox Code Playgroud)

python gis geopandas

4
推荐指数
1
解决办法
1万
查看次数

从回调函数渲染数据表 - Dash

我正在创建一个带有多个选项卡的仪表板,每个选项卡触发器和 .py 文件呈现不同的 plotly 对象元素。

例如,我的回调函数返回绘图、图表,我希望返回 Datatable。

我可以使用 go.Table 渲染 Pandas 数据框,如示例所示,但不能使用 DataTable,它是更新的并提供增强的用户体验。

import pandas as pd
import dash
from dash.dependencies import Input, Output, State
import dash_html_components as html
import dash_core_components as dcc
import plotly.plotly as py
from plotly import graph_objs as go
from plotly.graph_objs import *
import dash_table
import flask
from datetime import datetime as dt
from app import app


layout = html.Div([

    html.Div([

        dcc.Dropdown(
                id='select',
                options=[{'label': i, 'value': i} for i in List],
                value='abc',
                placeholder="xyz",
                style={'width': '100%'}

        ), …
Run Code Online (Sandbox Code Playgroud)

python pandas plotly plotly-dash

3
推荐指数
1
解决办法
5230
查看次数

条件颜色样式:plotly go.Bar

我想向堆积条形图添加条件样式。具体来说,堆栈的顶部栏将根据 x 轴值进行条件调整。

这是我的代码:

# sample df
df = pd.DataFrame({'Date': ['2010 - Q3','2010 - Q4','2011 - Q1','2011 - Q2','2011 - Q3','2011 - Q4'],
                   'Rate' : ['11.4','12.2','14.4','15.5','10.1','13.1'],
                   'Rate1': ['2.1','2.3','1.9','1.6','2.5','1.1']
                 })


clrs = 'rgb(222,0,0)'


fig = go.Figure(

            data=[

                  go.Bar(
                        x=df['Date'],
                        y=df['Rate'],
                        name='Natural Level'
                        ),

                  go.Bar(
                        x=df['Date'],
                        y=df['Rate1']),
                        name='Change',
                        marker=dict(color=clrs)
                        )

                  ],

            layout=go.Layout(

                title='Measuring excess demand and supply in the market.',

                xaxis=dict(
                    tickangle=90,
                    tickfont=dict(family='Rockwell', color='crimson', size=14)
                ),

                yaxis=dict(
                    title='Rate',
                    showticklabels=True
                ),

                barmode='stack',

            )
        ) 
Run Code Online (Sandbox Code Playgroud)

clrs变量采用以 x 轴值列表为条件的颜色值。IE clrs = rgb(222,0,0) if …

python plotly plotly-dash plotly-python

3
推荐指数
1
解决办法
5066
查看次数

如何在绘图破折号中向直方图添加垂直线?

我有一个graph在回调时触发的组件。这是我从回调函数绘制直方图的代码。

xtup = np.random.lognormal(90, 3, size=1000)
xtup = list(map('{:.0f}'.format,xtup[0]))
xarr = np.asarray(xtup).astype(np.float)

data = [go.Histogram(
                     x = xarr,
                     nbinsx=50,
                     marker=dict(color="rgb(105,105,105)",
                                 opacity=0.5
                                ),

       )]

layout = {
            "xaxis": {'title': 'Values',
                      'tickformat': '${:,.0f}'
                      #'range': [xarr.min(), xarr.max()]
                     },
            "title": "Distribution",
            "width": 650,
            "height": 400,
            "autosize": True
}

return{'data':data, 'layout':layout}
Run Code Online (Sandbox Code Playgroud)

我想在分布的平均值处添加一条垂直虚线。

python matplotlib plotly plotly-dash

2
推荐指数
1
解决办法
5765
查看次数

多选项卡破折号应用程序:将“dcc.Store”组件放置在不同的选项卡中

关于dcc.Store在多选项卡结构应用程序中使用的问题。我想保留/存储选项卡之间的数据切换。我的多页面/选项卡破折号应用程序结构如下所示:

  • 索引.py
  • 应用程序.py
    • 选项卡
      • tab1.py
        • 子选项卡1.py
        • 子选项卡2.py
      • tab2.py

index.py根据选择呈现每个文件的布局。

app.layout = html.Div([

    # tabs
    html.Div([

        dcc.Tabs(

            id="tabs",
            vertical=True,
            className="mb-3",
            persistence=True,

            children=[


                 dcc.Tab(label="tab1", value="tab1",
                         children=[dcc.Tabs(id="subtabs", persistence=True, 
                            children=[dcc.Tab(label='subtab1', value='subtab1'),
                                      dcc.Tab(label='subtab2', value='subtab2')
                            ],

                    )
                 ]),
                 dcc.Tab(label="tab2", value="tab2"),

            ],
            
        )

        ],

        className="row tabs_div"

    ),

        

        # Tab content
        html.Div(id="tab_content"),

])
Run Code Online (Sandbox Code Playgroud)

现在,我想在不同的子选项卡之间交换组件状态/数据。subtab1.py包含dcc.Graphanddata-table和 'subtab2.py contains a series of dcc.Graph组件。

我是否需要dcc.Store在两者中添加组件subtab1.pysubtab2.py存储各个组件并从中读取?我希望能够读取subtab1.pyinsubtab2.py和其他文件的组件状态。

python plotly plotly-dash

1
推荐指数
1
解决办法
3571
查看次数

Flask 应用程序 - 本地开发环境 - 更改未反映

我有一个在本地运行并测试的 Flask 应用程序。每次我对应用程序代码进行更改时,http://127.0.0.1:8000/只需刷新一下浏览器,这些更改就会反映在开发环境中。

现在,我必须终止 Flask App Ctrl X+ Ctrl C,然后重新启动/重新启动该应用程序。我用来gunicorn启动 Flask 应用程序。

不确定发生了什么变化,但如何配置应用程序以使更改在刷新时生效?

我有以下代码行init.py

if __name__ == '__main__':
    run_simple('0.0.0.0', 80, app, use_reloader=True, use_debugger=True)
Run Code Online (Sandbox Code Playgroud)

python development-environment flask gunicorn

1
推荐指数
1
解决办法
819
查看次数

Pandas 按条件分组/删除重复数据

我有一个包含重复项的 DataFrame。我想删除带有groupby和 条件的重复项。

import pandas as pd
import numpy as np

df = pd.DataFrame({
               'id': [0, 1, 2, 3, 4, 5],
               'nm': ['A','A','A','B','B','B'],
               'Rev': ['$10','$20','$30','$40','$50','$60'],
               'Exp': ['$2','$4','$6','$8','$10','$12'],
               'Dt': ['2019-03-01', '2020-09-30', np.nan, '2021-09-30', '2022-04-01', ' ']
             })
Run Code Online (Sandbox Code Playgroud)

重复数据删除后,我想保留最近日期的行。

因此,对于每个组nm,保留具有最近日期的行。请注意,日期可能是空白' '字符串或np.nan.

预期输出:

id nm Rev Exp Dt  
1  A  $20 $4  2020-09-30
4  B  $50 $10 2022-04-01
Run Code Online (Sandbox Code Playgroud)

python pandas

0
推荐指数
1
解决办法
48
查看次数