我在matplotlib中使用GridSpec来创建一个包含9个子图的页面.其中一个子图是使用以下代码创建的Seaborn条形图:
import seaborn as sns
sns.barplot(x=df['Time'], y=df['Volume_Count'], ax=ax7)
Run Code Online (Sandbox Code Playgroud)
有没有办法关闭条形图的垂直误差线?如果没有,是否可以减少钢筋的水平宽度?
谢谢!
我是该框架的新手Plotly Dash,并尝试构建一个简单的仪表板:
允许用户上传 CSV 文件以进行图形分析。
根据步骤 #1 中上传的文件创建 Pandas 数据框。
2a. 如果尚未选择 CSV 文件(以及生成的数据框),则不渲染任何内容。
根据上述数据框中包含的数据渲染基本条形图(或散点图、热图等)。
我的 CSV 文件中的数据类似于以下内容:
df = pd.DataFrame({'Make':['Ford', 'Ford', 'Ford', 'BMW', 'BMW', 'BMW', Mercedes', 'Mercedes', 'Mercedes'],
'Score':['88.6', '76.6', '100', '79.1', '86.8', '96.4', '97.3', '98.7', '98.5'],
'Dimension':['Speed', 'MPG', 'Styling', 'Speed', 'MPG', 'Styling', 'Speed', 'MPG', 'Styling'],
'Month':['Apr-19', 'Apr-19', 'Apr-19', 'Apr-19', 'Apr-19', 'Apr-19', 'Apr-19', 'Apr-19', 'Apr-19']})
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
import base64
import datetime
import io
import dash
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import dash_html_components as …Run Code Online (Sandbox Code Playgroud) 我正在使用该px.bar()函数来Plotly Express创建一些简单的条形图。
我的代码如下:
import plotly.express as px
import pandas as pd
test_df = pd.DataFrame({'Manufacturer':['Ford', 'Ford', 'Mercedes', 'BMW', 'Ford', 'Mercedes', 'BMW', 'Ford', 'Mercedes', 'BMW', 'Ford', 'Mercedes', 'BMW', 'Ford', 'Mercedes', 'BMW', 'Ford', 'Mercedes', 'BMW'],
'Metric':['Orders', 'Orders', 'Orders', 'Orders', 'Orders', 'Orders', 'Orders', 'Sales', 'Sales', 'Sales', 'Sales', 'Sales', 'Sales', 'Warranty', 'Warranty', 'Warranty', 'Warranty', 'Warranty', 'Warranty'],
'Sector':['Germany', 'Germany', 'Germany', 'Germany', 'USA', 'USA', 'USA', 'Germany', 'Germany', 'Germany', 'USA', 'USA', 'USA', 'Germany', 'Germany', 'Germany', 'USA', 'USA', 'USA'],
'Value':[45000, 70000, 90000, 65000, 40000, 65000, …Run Code Online (Sandbox Code Playgroud) 我想基于一列的子字符串搜索和另一列的逆搜索在 Pandas 数据框中创建一个新列。这是一些数据:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Manufacturer':['ABC-001', 'ABC-002', 'ABC-003', 'ABC-004', 'DEF-123', 'DEF-124', 'DEF-125', 'ABC-987', 'ABC-986', 'ABC-985'],
'Color':['04-Red', 'vs Red - 07', 'Red', 'Red--321', np.nan, np.nan, np.nan, 'Blue', 'Black', 'Orange'],
})
Manufacturer Color
0 ABC-001 04-Red
1 ABC-002 vs Red - 07
2 ABC-003 Red
3 ABC-004 Red--321
4 DEF-123 NaN
5 DEF-124 NaN
6 DEF-125 NaN
7 ABC-987 Blue
8 ABC-986 Black
9 ABC-985 Orange
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个Country基于以下逻辑命名的新列:
a) 如果该Manufacturer列包含子字符串“ABC”并且该Color …
我从以下 HTML/CSS 代码中看到了一些意外行为:
CSS
*{
font-family: arial, sans-serif;
padding: 0px;
margin: 0px;
}
body {
display: flex;
align-items: column;
flex-direction: column;
}
nav {
display: flex;
align-items: center;
justify-content: flex-end;
margin-right: 30px;
margin-top: 15px;
}
nav a {
font-size: 13px;
color: rgba(0, 0, 0, .87);
text-decoration: none;
cursor: pointer;
padding: 7px;
}
nav a:hover {
text-decoration: underline;
}
.buttons {
background-color: #f8f9fa;
border: 1px solid #f8f9fa;
border-radius: 4px;
font-size: 14px;
margin: 11px 4px;
padding: 0 16px;
line-height: 27px;
height: 36px; …Run Code Online (Sandbox Code Playgroud)我有一个带有一些时间序列数据的csv文件.我这样创建一个数据框:
df = pd.read_csv('C:\\Desktop\\Scripts\\TimeSeries.log')
Run Code Online (Sandbox Code Playgroud)
当我打电话时df.head(6),数据显示如下:
Company Date Value
ABC 08/21/16 00:00:00 500
ABC 08/22/16 00:00:00 600
ABC 08/23/16 00:00:00 650
ABC 08/24/16 00:00:00 625
ABC 08/25/16 00:00:00 675
ABC 08/26/16 00:00:00 680
Run Code Online (Sandbox Code Playgroud)
然后,我有以下内容强制'Date'列为datetime格式:
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce')
Run Code Online (Sandbox Code Playgroud)
有趣的是,pandas.core.series.Series当我打电话给以下时,我会看到" "
type(df['Date'])
Run Code Online (Sandbox Code Playgroud)
最后,我打电话给以下人员创建一个情节:
%matplotlib qt
sns.tsplot(df['Value'])
Run Code Online (Sandbox Code Playgroud)
在从左到右的x轴上,我看到从0到数据帧中的行数的整数.如何将"日期"列添加为此图的x轴值?
谢谢!
我有以下数据框:
Company Date Value
ABC 08/21/16 00:00:00 500
ABC 08/22/16 00:00:00 600
ABC 08/23/16 00:00:00 650
ABC 08/24/16 00:00:00 625
ABC 08/25/16 00:00:00 675
ABC 08/26/16 00:00:00 680
Run Code Online (Sandbox Code Playgroud)
如果我们假设 2016 年 8 月 26 日是今天的日期,那么我想创建一个新的数据框,有效排除 08/26/16 行中的数据。
编辑: 这是我的代码:
today = time.strftime("%m/%d/%Y")
df.Date = df.Date <> today
Run Code Online (Sandbox Code Playgroud)
不幸的是,我看到一条错误消息,指出:
'Series' object has no attribute 'Date'
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
谢谢!
解决方案:
today = time.strftime("%Y-%m-%d")
df = df.loc[(df.Date < today)]
Run Code Online (Sandbox Code Playgroud) 我正在尝试将多个数字保存到一个多页PDF文档中.我的代码如下:
import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages('output.pdf')
sns.set_style('darkgrid')
g = sns.factorplot(data=df,
x='Date',
y='Product_Count',
col='Company',
col_wrap=4,
sharey=False)
g.set_xlabels('')
g.set_ylabels('product count')
g.set_xticklabels(rotation=45)
plt.locator_params(axis = 'x', nbins = 8)
f = sns.factorplot(data=df,
x='Date',
y='Volume_Count',
col='Company',
col_wrap=4,
sharey=False)
f.set_xlabels('')
f.set_ylabels('volume count')
f.set_xticklabels(rotation=45)
plt.locator_params(axis = 'x', nbins = 8)
figures = [g, f]
for figure in figures:
pdf.savefig(figure)
pdf.close()
Run Code Online (Sandbox Code Playgroud)
我看到此错误消息:
ValueError: No such figure: <seaborn.axisgrid.FacetGrid object at 0x237CD5F0>
Run Code Online (Sandbox Code Playgroud)
迭代有什么问题吗?
我有以下(玩具)数据集:
import pandas as pd
import numpy as np
df = pd.DataFrame({'System_Key':['MER-002', 'MER-003', 'MER-004', 'MER-005', 'BAV-378', 'BAV-379', 'BAV-380', 'BAV-381', 'AUD-220', 'AUD-221', 'AUD-222', 'AUD-223'],
'Manufacturer':['Mercedes', 'Mercedes', 'Mercedes', 'Mercedes', 'BMW', 'BMW', 'BMW', 'BMW', 'Audi', 'Audi', 'Audi', 'Audi'],
'Region':['Americas', 'Europe', 'Americas', 'Asia', 'Asia', 'Europe', 'Europe', 'Europe', 'Americas', 'Asia', 'Americas', 'Americas'],
'Department':[np.nan, 'Sales', np.nan, 'Operations', np.nan, np.nan, 'Accounting', np.nan, 'Finance', 'Finance', 'Finance', np.nan]
})
System_Key Manufacturer Region Department
0 MER-002 Mercedes Americas NaN
1 MER-003 Mercedes Europe Sales
2 MER-004 Mercedes Americas NaN
3 …Run Code Online (Sandbox Code Playgroud) 我正在使用Seaborn制作一个因子图.
总共,我有4个'子图'(并使用col_wrap =2,所以我有2行,每行包含2个子图).只有网格底部的2个子图有x轴标签(我相信这是默认值).
是否可以配置因子图,使4个图中的每一个都有x轴标签?(我在文档或StackOverflow中找不到此选项)
更新:
这是代码(在因子网格上生成4个时间序列图):
数据框(df)如下所示:
Company Date Value
ABC 08/21/16 500
ABC 08/22/16 600
ABC 08/23/16 650
DEF 08/21/16 625
DEF 08/22/16 675
DEF 08/23/16 680
GHI 08/21/16 500
GHI 08/22/16 600
GHI 08/23/16 650
JKL 08/21/16 625
JKL 08/22/16 675
JKL 08/23/16 680
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.read_csv(the_file_name.csv)
g = sns.factorplot(data=df,
x='Date',
y='Value',
col='Company',
col_wrap=2,
sharey=False)
g.set_xlabels('')
g.set_ylabels('product count')
g.set_xticklabels(rotation=45)
plt.show()
Run Code Online (Sandbox Code Playgroud)
您会注意到x轴日期显示在底部的2个图上.我希望x轴日期也显示在前2个图上.
谢谢!
我有一个 pandas 数据框,如下所示:
key system impl_date
1 madison 2021-01-27T13:16:18.000-0600
2 madison 2021-01-27T13:15:04.000-0600
3 lexington 2021-01-27T13:08:27.000-0600
4 park 2021-01-27T13:05:42.000-0600
Run Code Online (Sandbox Code Playgroud)
该impl_date列包含字符串,因为在脚本的前面我应用了以下内容:
df = df.applymap(str)
Run Code Online (Sandbox Code Playgroud)
我想获取该impl_date列并去除时间元素,从而得到采用以下形式的日期:
yyyy-mm-dd
Run Code Online (Sandbox Code Playgroud)
我使用了以下内容:
df['impl_date'] = pd.to_datetime(df['impl_date']).dt.strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
此操作失败并显示以下错误消息:
AttributeError: Can only use .dt accessor with datetimelike values
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
df['impl_date'] = pd.to_datetime(df['impl_date'], errors='coerce').dt.strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
此操作失败并显示相同的错误消息。
df.dtypes给出以下结果:
key object
system object
impl_date object
type: object
Run Code Online (Sandbox Code Playgroud)
type(df)给出:
pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)
并且,df.info()给出:
# Column Non-Null Count Dtype
- ------ -------------- -----
0 key 6453 non-null object
1 system …Run Code Online (Sandbox Code Playgroud) 我有以下Pandas数据框df,如下所示:
import pandas as pd
df = pd.DataFrame({'state' : ['NY', 'CA', 'FL', 'NJ', 'TX', 'CT', 'MA', 'WA', 'IL', 'GA'],
'user_id' : [10000, 3200, 1600, 1200, 800, 600, 400, 350, 270, 260]
})
state user_id
0 NY 10000
1 CA 3200
2 FL 1600
3 NJ 1200
4 TX 800
5 CT 600
6 MA 400
7 WA 350
8 IL 270
9 GA 260
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个 Plotly choropleth,其中包含每个州的数据标签。
为此,我使用add_scattergeo:
fig = px.choropleth(df,
locations = …Run Code Online (Sandbox Code Playgroud) 我有以下玩具数据集(实际数据集约为 500,000 条记录):
library(data.table)
dt <- data.table(Address = c("Gold", "Gold", "Silver", "Silver", "Gold", "Gold", "Copper", "Gold", "Bronze"),
Name = c("Stat1", "Stat1", "Stat1", "Stat1", "Stat1", "Stat1", "Stat1", "Stat1", "Stat1"),
AvgValue = c(0, 0.5, 1.25, 0.75, 1.5, 0.7, 0.41, 0.83, 2.58),
Samples = c(123, 233, 504, 3, 94, 50, 401, 402, 12))
Run Code Online (Sandbox Code Playgroud)
我想做以下事情:
a) 对数据进行子集化,以便我们只考虑“黄金”记录”和“值”列中大于零的值
b) 使用上面“a”中过滤后的数据,打印出百分位数和其他描述性统计数据。
执行上面“a”和“b”的代码如下:
qs = dt[AvgValue > 0 & Address %like% 'Gold',
.(Samples = sum(Samples),
'25th' = quantile(AvgValue, probs = c(0.25)),
'50th' = quantile(AvgValue, probs …Run Code Online (Sandbox Code Playgroud)