我刚开始学习pandas,找到了一个excel数据集,导出到csv。它由40个独特部门的多个变量组成。结构如下,但每个部门报告10年的变量A、B、C等。
| 部门|变量A(2010年)|变量A(2011年)|变量B(2010年)|变量B(2011年)|
| - -----|- -----|- -----|- -----|- -----|
| 一个|一万二|一万三千|一万两千五百|13040|
| B|一万四千|一万五|12070| 13060|
我认为这将很难在pandas中进行分析,因此在导出为csv然后导入pandas之前,需要在excel中重新构建数据集。
我已经尝试如下重组数据集,认为这将使pandas中的数据分析更容易。
| 年份|部门|变量A|变量B|
| - -----|- -----|- -----|- -----|
| 2010年|一个|一万二|一万两千五百|
| 2010年|B|一万四千|12070|
| 2011年|一个|一万三千|13040|
| 2011年|B|一万五|13060|
然而,这是非常繁琐的手工操作,容易出错。我还没有找到一种在pandas中操作/重组数据的方法,如第二个表所示。请问是否有一个方法我失踪,应该调查请?谢谢你的指点。
2条答案
按热度按时间qybjjes11#
.wide_to_long()
如果需要,可以
.reset_index()
并从结果Year
列中删除()
。ppcbkaq52#
是的,有一种方法可以使用pandas重组数据。您可以使用pandas中的melt函数将数据从宽格式重塑为长格式。这里有一个例子,你可以如何实现这一点:
此代码将原始宽格式数据集转换为长格式数据集,类似于您提供的第二个表。melt函数用于将列'VariableA(2010)'、'VariableA(2011)'、'VariableB(2010)'、'VariableB(2011)'等堆叠到单个列'Value'中,同时保持'Department'列作为标识符。将拆分列名以提取年份和变量名。
确保将'your_data.csv'替换为CSV文件的实际路径或文件名。
通过使用pandas中的melt函数,您可以避免在Excel中手动重新构建数据,并直接在pandas中对重新构建的数据集执行分析。