Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅将数据帧的键显示为绘图的XTICK(熊猫)?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何仅将数据帧的键显示为绘图的XTICK(熊猫)?

Python 如何仅将数据帧的键显示为绘图的XTICK(熊猫)?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含键的数据框,它是由几个数据框串联而成的,我想制作一个图,其中只有键元素作为xtickslabel,但是默认的索引编号显示在键旁边,作为xtickslabel。Xticklabel现在是元组(键,索引),而不是键。我想去掉默认的索引值。下面的示例代码和plot语句的绘图将生成(4D,0),(5D,0),(6D,0)和(7D,0)作为Xticklabel,但是,我只希望4D,5D,6D,7D作为Xticklabel 将熊猫作为pd导入 dfA=pd.DataFrame([2,4,6,8]

我有一个包含键的数据框,它是由几个数据框串联而成的,我想制作一个图,其中只有
元素作为
xtickslabel
,但是默认的索引编号显示在键旁边,作为xtickslabel。Xticklabel现在是元组(键,索引),而不是
。我想去掉默认的索引值。下面的示例代码和plot语句的绘图将生成
(4D,0),(5D,0),(6D,0)和(7D,0)
作为Xticklabel,但是,我只希望
4D,5D,6D,7D
作为Xticklabel

将熊猫作为pd导入
dfA=pd.DataFrame([2,4,6,8],columns=['A'])
dfB=pd.DataFrame([4,6,8,10],columns=['B'])
dfC=pd.DataFrame([6,8,10,12],columns=['C'])
alldata=pd.concat([dfA,dfB,dfC],键=[4D',5D',6D',7D'])
alldata.plot.bar(title='Data',ylabel='y',xlabel='x')

使用for语句,将每个索引中的第一项保存到列表中,并将其传递给
setxticklabels
中的参数

#获取每个元组的第一个值。
indexList=[alldata.index中项目的项目[0]
索引列表:

['4D', '4D', '4D', '4D', '5D', '5D', '5D', '5D', '6D', '6D', '6D', '6D']
因此,完整的来源是

import pandas as pd

dfA = pd.DataFrame([2, 4, 6, 8], columns = ['A'])
dfB = pd.DataFrame([4, 6, 8, 10], columns = ['B'])
dfC = pd.DataFrame([6, 8, 10, 12], columns = ['C']) 

alldata = pd.concat([dfA, dfB, dfC], keys = ['4D', '5D', '6D', '7D'])

# Get the first value of each tuple.
indexList = [item[0] for item in alldata.index]

ax = alldata.plot.bar(title = 'Data', ylabel = 'y', xlabel = 'x')

# Set xticklabels
ax.set_xticklabels(indexList);
输出:


编辑
  • 创建索引为“4D”、“5D”、“6D”和“7D”的数据帧
  • index=['4D','5D','6D','7D']
    dfA=pd.DataFrame([2,4,6,8],columns=['A'],index=index)
    dfB=pd.DataFrame([4,6,8,10],columns=['B'],index=index)
    dfC=pd.DataFrame([6,8,10,12],columns=['C'],index=index)
    
  • 设置为轴=1,则数据帧将横向合并
  • alldata=pd.concat([dfA,dfB,dfC],轴=1)
    
  • 绘图(与代码相同)
  • alldata.plot.bar(title='Data',ylabel='y',xlabel='x')
    
    输出:

    很抱歉,我没有包括我想要在所有三个已连接的dataframe中获得相应元素的分组条形图。所以它在4D下是(2,4,6),在5D下是(4,6,8),在6D下是(6,8,10),在7D下是(8,10,12)。这就是我在第一个位置添加键的原因。这样我就可以把它画出来,然后按键立刻显示为标签。我已经搜索了一种删除默认索引的方法,但事实证明这很困难。@Fonnie那么,在最初创建三个数据帧时,如何为“4D”、“5D”、“6D”和“7D”建立索引呢?我编辑了我的帖子。我不知道它与您想要的结果有多相符,但我认为它比处理元组键更简单。非常感谢@elena.kim。这就像魔术一样。@Fonnie如果我的回答有帮助,请接受我的回答:)很抱歉。我非常感谢你的意见。