两个 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) 我的布局中有一个地图和数据表组件,可以通过回调进行更新。数据表是可编辑的,用户可以向新表添加新信息。更新表的点击事件时
我有两个回调,一个用于更新地图,另一个用于数据表。我想做的是从数据表回调内部运行地图回调。基本上,我想根据数据表的值更新地图。
我可以从回调运行另一个回调或在另一个回调中运行某些代码行吗?试图找出一种优雅而有效的方法来做到这一点。
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) 我想向使用回调呈现的散点图添加多项式曲线。
以下是我的回调函数,它返回散点图。
@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) 我正在创建 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) 我正在创建一个带有多个选项卡的仪表板,每个选项卡触发器和 .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) 我想向堆积条形图添加条件样式。具体来说,堆栈的顶部栏将根据 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 …
我有一个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)
我想在分布的平均值处添加一条垂直虚线。
关于dcc.Store在多选项卡结构应用程序中使用的问题。我想保留/存储选项卡之间的数据切换。我的多页面/选项卡破折号应用程序结构如下所示:
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.py并subtab2.py存储各个组件并从中读取?我希望能够读取subtab1.pyinsubtab2.py和其他文件的组件状态。
我有一个在本地运行并测试的 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) 我有一个包含重复项的 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 ×10
plotly ×6
plotly-dash ×6
pandas ×3
flask ×1
geopandas ×1
gis ×1
gunicorn ×1
matplotlib ×1
plotly.js ×1
polynomials ×1