我使用以下代码读入Excel文件,并使用seaborn包绘制箱线图。
import scipy.stats as sps
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from openpyxl import load_workbook
sns.set()
inpath=r"P:\Data.xlsx"
df=pd.read_excel(io=inpath,header=0,sheetname="65051045")
df1=df[df["Gel.Menge"]!=0]["Gel.Menge"]
print(df1)
fig2=plt.figure(figsize=(15,10))
sns.boxplot(data=df1)
sns.swarmplot(data=df1,color="black",alpha=0.5)
plt.title("65051045")
excel表格如下所示:
Gel.Menge Erf.datum Freig.
0,000 26.11.2014 26.11.2014
10,000 06.11.2014 07.11.2014
5,000 19.12.2014 08.01.2015
7,000 07.07.2015 17.07.2015
1,000 21.07.2015 22.07.2015
5,000 18.03.2016 22.03.2016
10,000 29.03.2016 31.03.2016
10,000 20.07.2016 21.07.2016
20,000 13.10.2016 17.10.2016
5,000 01.12.2014 01.12.2014
3,000 20.04.2015 20.04.2015
如果我运行代码,我会得到以下错误消息:
按键错误追溯(最近调用最后一次)in()84打印(df1)85图2 =平面图(图大小=(15,10))---〉86 sns箱线图(数据= df1)87 sns群线图(数据= df1,颜色="黑色",α = 0.5)88平面标题("65051045-激光扫描仪获取曲线")
箱线图中的C:\ProgramData\Anaconda3\lib\site-packages\seaborn\categorical.py(x,y,色调,数据,顺序,色调顺序,方向,颜色,调色板,饱和度,宽度,传单大小,线宽,whis,陷波,ax,kwargs)
2173绘图仪=_BoxPlotter(x,y,色调,数据,顺序,色调顺序,
2174方向、颜色、调色板、饱和度,-〉2175宽度、传单大小、线宽)2176 2177如果ax为None:
C:\ProgramData\Anaconda3\lib\site-packages\seaborn\categorical.py ininit**(自身、x、y、色调、数据、顺序、色调顺序、方向、颜色、调色板、饱和度、宽度、传单大小、线宽)424宽度、传单大小、线宽):425--〉426自建立变量(x,y,色调,数据,方向,顺序,色调顺序)427自建立颜色(颜色,调色板,饱和度)428
C:\ProgramData\Anaconda3\lib\site-packages\seaborn\categorical.py在建立变量(自身、x、y、色调、数据、方向、顺序、色调顺序、单位)94中,如果有属性(数据、"形状"):95,如果透镜(数据形状)== 1:- --〉96,如果np.是标量(数据[0]):97绘图数据=[数据] 98否则:
C:\ProgramData\Anaconda3\lib\站点包\panda\core\series.py位于getitem(自身,键)599键= com._apply_if_callable(键,自身)600尝试:- -〉601结果= self. index. get_value(self,键)602 603如果不是则为标量(结果):
C:\程序数据\Anaconda3\库\站点包\Pandas\核心\索引\base.py在get_value(self,series,key)2426尝试:2427
返回自身.引擎.获取值(s,k,-〉2428 tz = getattr(系列.数据类型,'tz',无))2429,除了键错误为e1:2430如果len(self)〉0并且self. inferred_type位于["整数","布尔值"]中:
Pandas_库\索引. pyx在Pandas中._库.索引.索引引擎. get_value(Pandas_库\索引. c:4363)()
Pandas_库\索引. pyx在Pandas中._库.索引.索引引擎. get_value(Pandas_库\索引. c:4046)()
Pandas_库\索引. pyx在Pandas中._库.索引.索引引擎. get_loc(Pandas_库\索引. c:5085)()
panda_libs\散列表类帮助器. pxi在pandas中._libs.散列表. Int64散列表. get_item(panda_libs\散列表. c:13913)()
panda_libs\散列表类帮助器. pxi在pandas中._libs.散列表. Int64散列表. get_item(panda_libs\散列表. c:13857)()
密钥错误:0
令人惊讶的是,plot(df1)命令正在工作,并绘制:
我做错了什么???
2条答案
按热度按时间mrfwxfqh1#
我认为问题在于我已经定义了:
因此df1不再是 Dataframe ,并且海运将被混淆。
如果我改变:
到
并且还显式定义df1以使用以下内容作为 Dataframe :
密码起作用了。
工作代码如下所示:
xhv8bpkk2#
我也有同样的问题。我用
我的df的索引不好