我正在尝试使用seaborn生成热图,但是我的数据格式存在一个小问题。
目前,我的数据格式为:
Name Diag Date
A 1 2006-12-01
A 1 1994-02-12
A 2 2001-07-23
B 2 1999-09-12
B 1 2016-10-12
C 3 2010-01-20
C 2 1998-08-20
Run Code Online (Sandbox Code Playgroud)
我想创建一个热图(最好在python中)显示Name在一个轴上Diag-如果发生。我尝试使用旋转数据表pd.pivot,但是出现了错误
ValueError:索引包含重复的条目,无法重塑
来自:
piv = df.pivot_table(index ='Name',columns ='Diag')
时间无关紧要,但是我想展示哪个Names具有哪个Diag,哪个Diag组合聚集在一起。我是否需要为此创建一个新表?在某些情况下,Name并非与所有Diag
编辑:我从此尝试过:piv = df.pivot_table(index ='Name',columns ='Diag',values ='Time',aggfunc ='mean')
但是,由于时间采用日期时间格式,因此我最终得到:
pandas.core.base.DataError:没有要聚合的数字类型
我正在尝试更改 matplotlib 中对数图的刻度标签,通常通过手动设置标签可以正常工作。然而,经常会出现如下所示的问题,手动移动标签似乎保留了一些旧标签。知道如何解决这个问题吗?
import matplotlib.pyplot as plt
%matplotlib inline
fig, ax = plt.subplots()
x = [1, 10]
y = [0, 1]
ax.plot(x, y)
ax.set_xscale('log')
ax.set_xlim(0, 10)
ax.set_xticks([2.5, 7.5])
Run Code Online (Sandbox Code Playgroud)
另外,我最近升级到 matplotlib 2.0.2,但我不记得以前见过这种行为。
背景:
我想在给定行长度的元素中切片pandas数据帧,并对它们执行计算.
pandas.DataFrame.rolling将允许我这样做,但似乎只有内置函数,如sum()示例中所示df.rolling(2, win_type='triang').sum().我还想绘制这些子集(我可以通过切片和一些For循环来做到这一点,但它有点慢).
我发现了什么:
从如何获取Python函数的源代码?我已经知道我可以阅读使用的源代码,pandas.DataFrame.rolling??这将给我这个:
但是试图从这里深入挖掘使用例如rolling??似乎是徒劳的:
那么,是否有可能以pandas.DataFrame.rolling某种方式引用底层函数,或者这是使用Python结束的?我想是的,因为文档声明大熊猫是用Cython或C编写的,但我真的好奇这个,所以我也想在这里问一下这个问题.
谢谢你的任何建议!
我正在尝试根据“Plotly”中的类别和日期的 ID 计数创建多个折线图 我的日期包含三列“日期”、“类别”、“ID”
我现在使用此代码绘制了一条线
b=mdata.groupby(['Date']).count()['ID ']
b=b.sort_index(ascending=True)
xScale = b.index
yScale = b.values
trace =go.Scatter(
x = xScale,
y = yScale,
marker=dict(
color='Red')
)
data2 = [trace]
graphJSON2 = json.dumps(data2, cls=plotly.utils.PlotlyJSONEncoder)
Run Code Online (Sandbox Code Playgroud)
输出图表应该在 X 轴上有日期,在 Y 轴上有 ID 计数和基于类别的多条线
我有一个数据集如下:
import pandas as pd
data = dict(Pclass=[1,1,2,2,3,3],
Survived = [0,1,0,1,0,1],
CategorySize = [80,136,97,87,372,119] )
Run Code Online (Sandbox Code Playgroud)
我需要在pythonbarchart中创建一个using ,它按Pclass分组。在每组中,我有 2 列和,在 Y 轴上我应该有. 因此,我必须有 6 个条,分为 3 组。plotlySurvived=0Survived=1CategorySize
这是我尝试过的:
import plotly.offline as pyo
import plotly.graph_objects as go
data = [ go.Bar( x = PclassSurvived.Pclass, y = PclassSurvived.CategorySize ) ]
layout = go.Layout(title= 'Pclass-Survived', xaxis = dict(title = 'Pclass'), yaxis = dict(title = 'CategorySize'),barmode='group' )
fig = go.Figure(data = data, layout = layout)
pyo.plot( …Run Code Online (Sandbox Code Playgroud) 我有带有 Country 列的用户数据集,并且想要绘制用户在各个国家/地区的分布图。我将数据集转换为字典,其中键是国家/地区名称,值是国家/地区的频率计数。字典是这样的:
'usa': 139421,
'canada': 21601,
'united kingdom': 18314,
'germany': 17024,
'spain': 13096,
[...]
Run Code Online (Sandbox Code Playgroud)
为了在世界地图上绘制分布,我使用了以下代码:
#Convert to dictionary
counts = users['Country'].value_counts().to_dict()
#Country names
def getList(dict):
return [*dict]
countrs = getList(counts)
#Frequency counts
freqs = list(counts.values())
#Plotting
data = dict(
type = 'choropleth',
colorscale = 'Viridis',
reversescale = True,
locations = countrs,
locationmode = "country names",
z = freqs,
text = users['Country'],
colorbar = {'title' : 'Number of Users'},
)
layout = dict(title = 'Number of Users per Country',
geo …Run Code Online (Sandbox Code Playgroud) 像这样的清单
lst1 = [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我想轻松地插入一个新的号码1在index [0],并在同一时间下降了5,在index [-1]让我结束了:
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
这可以使用:
lst1.insert(0,1)
lst1.pop()
print(lst1)
# output
# [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
但是我对这样一个事实感到有些困惑,因为似乎不存在直接执行此操作的内置方法。我发现最接近解决方案的是分配1给它自己的列表,然后用这样的索引扩展它lst1:
lst0=[1]
lst0.extend(lst1[:-1])
print(lst0)
# output:
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
但不知何故,这感觉有点落后,而且它肯定不是单行的。有没有更pythonic的方法来做到这一点?
对于比我拥有更基础 Python 知识的人来说,这可能是显而易见的,而且它本身甚至不能证明一个问题的合理性。但我对这些事情越来越好奇,想知道这是否可能。如果不是,那为什么呢?
我在 Python 中使用 plotly 创建由一些分类变量着色的美国县的等值线图。由于县太小,因此图像之间的边界线占主导地位。我怎样才能摆脱它们(或将它们的宽度设置为零)?
到目前为止的代码和输出(使用随机数据):
情节:https : //i.stack.imgur.com/G3ltp.png
from urllib.request import urlopen
import json
import numpy as np
import plotly.express as px
import pandas as pd
#Read county geography
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
buf = response.read()
counties = json.loads(buf.decode('utf-8'))
#Create random data
df = pd.DataFrame(np.random.randn(99999, 1),columns=["val"])
df['category']=df['val']>1
df['fips'] = list(range(1,100000))
#Graph
fig = px.choropleth(df, geojson=counties, locations='fips', color='category',
scope="usa")
fig.show()
Run Code Online (Sandbox Code Playgroud) def update_graph_bar(named_count,**kwargs):
traces = list()
df = pd.DataFrame(list(Message.objects.all().values()))
available_indicators = list(df['content'].unique())
for t in available_indicators:
traces.append(go.Bar(
x=[t],
y=[df[df['content']==t]['timestamp'].count()],
name='{}'.format(t),text=[df[df['content']==t]['timestamp'].count()],
textposition='auto'
))
layout = plotly.graph_objs.Layout(barmode='group',paper_bgcolor='#00FFFF',
plot_bgcolor='rgba(0,0,0,0)',)
return {'data': traces,
'layout': layout}
Run Code Online (Sandbox Code Playgroud)
我有上面的代码,在这里我想使用“标记”引入颜色编码,这样条形图的颜色应该取决于它的值。随着值的增加,颜色也会改变。
我使用以下 Python 代码来生成旭日图:-
import plotly
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
df = pd.read_csv('CellUsageStats.csv',dtype={'Population':int},keep_default_na=False)
print(df.head(50))
fig = px.sunburst(df, path=['LibPrefix', 'MasterPrefixAbrHead', 'MasterPrefixAbrTail', 'Drive'], values='Population', color='Population', color_continuous_scale=px.colors.sequential.Inferno)
fig.update_traces(hovertemplate='Pattern: %{currentPath}%{label}<br>Matches: %{value}<br>Percent of <b>%{parent}</b>: %{percentParent:0.2%f}<br>Percent of <b>%{entry}</b>: %{percentEntry:0.2%f}<br>Percent of <b>%{root}</b>: %{percentRoot:0.2%f}')
fig.show()
plotly.offline.plot(fig, filename='sunburst.html')
Run Code Online (Sandbox Code Playgroud)
我有第二个 csv 文件,使用上面相同的代码来生成另一个旭日。如何将它们组合起来在同一个 html 输出中创建并排绘图?我发现...
https://plotly.com/python/sunburst-charts/
但是,我确实需要 px.sunburst 属性,并且上面链接中的示例使用 go.Sunburst,而不是 px.sunburst。是否有一种直接的方法可以从两组不同的数据生成并排图?
谢谢!
python ×10
plotly ×6
pandas ×4
bar-chart ×1
choropleth ×1
d3.js ×1
list ×1
matplotlib ×1
seaborn ×1