最近找数据整理用excel一直重复操作给恶心吐了,主要重复三种操作,多个面板的合并汇总,面板转横截面数据、截面数据转面板数据。所以自己写了代码解放双手,秒出结果,直接复制文件地址即可实现!

合并面板数据

def merge_panel(file_path,file_finish):file_name_list = os.listdir(file_path)file_list = []for i in file_name_list:a = file_path + '\\' + ifile_list.append(a)# print(a)data1 = pd.DataFrame(columns=['临时'])for file in file_list:data = pd.read_excel(file, sheet_name=0)names_list = data.columns.tolist()# print(names_list)# data.reindex(columns=names_list)data['临时'] = data[names_list[0]].astype(str) + data[names_list[1]].str[:2].astype(str)names_list.insert(names_list.index(names_list[2]), '临时')# print(names_list)data = data.reindex(columns=names_list)data = data.set_index([names_list[0], names_list[1]])data1 = data1.merge(data, how='outer', on='临时')# print(data1)# print(data1)# print(data[names_list[1]].str[:2])# print(data)data1["time"] = data1["临时"].str.extract('(\d+)')# print(df)data1["place"] = data1["临时"].str.extract('(\D+)', expand=False).str.strip()names_list1 = data1.columns.tolist()# print(names_list1)names_list1.insert(names_list1.index(names_list1[1]), 'time')# print(names_list1)names_list1.insert(names_list1.index('time') + 1, "place")data1 = data1.reindex(columns=names_list1[:-2])data1 = data1.drop(['临时'], axis=1)# data1 = data1.set_index(0)# print(names_list1[:-2])# print(data1.columns.tolist())names_list2 = data1.columns.valuesdata1 = data1.set_index(names_list2[1])data1.to_excel(file_finish)

截面数据转面板数据

def to_panel(file,file_finish):data = pd.read_excel(file, sheet_name=0)name = data.columns.valuesdata = data.melt(id_vars=name[0], value_vars=name[1:]).set_index(name[0])# data.to_excel(file_finish)data["time"] = data["variable"].str.extract('(\d+)')# print(df)data["variable"] = data["variable"].str.extract('(\D+)', expand=False).str.strip()data = data.loc[:, ['time', 'variable', 'value']]data = data.pivot_table(index=[name[0], 'time'], columns=["variable"]).reset_index().set_index(name[0])# print(data.columns.values)name12 = data.columns.values[:1]name_list1 = []for i in name12:name_list1.append(i[0])names = data.columns.values[1:]name_list = []for i in names:name_list.append(i[1])name_sum = name_list1 + name_list# print(name_sum)data.set_axis(name_sum, axis='columns', inplace=True)# data.drop(data.index[0:3], inplace=True)data = data.reset_index()data = data.set_index('time')data.to_excel(file_finish)

面板数据转截面数据

def reshape_wide(file,file_finish):data = pd.read_excel(file, sheet_name=0)# 获取列名list_name = data.columns.values# 读取省份(城市)city_list = list(set(data[list_name[0]]))data_Section = pd.DataFrame()city_list.sort()data_Section[list_name[0]] = city_list# 读取年份year_list = list(set(data[list_name[1]]))year_list.sort()# 截面变量for para in list_name[2:]:for year in year_list:para_name = str(year) + paradata_Section[para_name] = ""# 读取行值for index, row in data.iterrows():# 城市row_city = row[0]# 年份row_year = row[1]# 变量row_para = row[2:]paras_name = list_name[2:]# 将两列表合成元组hecheng = list(zip(row_para, str(row_year) + paras_name))# print(hecheng)city_weizhi_hang = data_Section[(data_Section[list_name[0]] == row_city)].index.tolist()for num, paraname in hecheng:data_Section.loc[city_weizhi_hang, paraname] = numdata_Section = data_Section.set_index(list_name[0])data_Section.to_excel(file_finish)

 全部代码

import pandas as pd
import numpy as np
import os# 消去空值
def read_excel(file,file_finish):data = pd.read_excel(file, sheet_name=0)print(data)data = data.dropna()data.to_excel(r"C:\Users\ZhangX\Desktop\stata.xlsx")# 面板数据转截面数据
def reshape_wide(file,file_finish):data = pd.read_excel(file, sheet_name=0)# 获取列名list_name = data.columns.values# 读取省份(城市)city_list = list(set(data[list_name[0]]))data_Section = pd.DataFrame()city_list.sort()data_Section[list_name[0]] = city_list# 读取年份year_list = list(set(data[list_name[1]]))year_list.sort()# 截面变量for para in list_name[2:]:for year in year_list:para_name = str(year) + paradata_Section[para_name] = ""# 读取行值for index, row in data.iterrows():# 城市row_city = row[0]# 年份row_year = row[1]# 变量row_para = row[2:]paras_name = list_name[2:]# 将两列表合成元组hecheng = list(zip(row_para, str(row_year) + paras_name))# print(hecheng)city_weizhi_hang = data_Section[(data_Section[list_name[0]] == row_city)].index.tolist()for num, paraname in hecheng:data_Section.loc[city_weizhi_hang, paraname] = numdata_Section = data_Section.set_index(list_name[0])data_Section.to_excel(file_finish)# 截面数据转面板数据
def to_panel(file,file_finish):data = pd.read_excel(file, sheet_name=0)name = data.columns.valuesdata = data.melt(id_vars=name[0], value_vars=name[1:]).set_index(name[0])# data.to_excel(file_finish)data["time"] = data["variable"].str.extract('(\d+)')# print(df)data["variable"] = data["variable"].str.extract('(\D+)', expand=False).str.strip()data = data.loc[:, ['time', 'variable', 'value']]data = data.pivot_table(index=[name[0], 'time'], columns=["variable"]).reset_index().set_index(name[0])# print(data.columns.values)name12 = data.columns.values[:1]name_list1 = []for i in name12:name_list1.append(i[0])names = data.columns.values[1:]name_list = []for i in names:name_list.append(i[1])name_sum = name_list1 + name_list# print(name_sum)data.set_axis(name_sum, axis='columns', inplace=True)# data.drop(data.index[0:3], inplace=True)data = data.reset_index()data = data.set_index('time')data.to_excel(file_finish)# 合并面板数据
def merge_panel(file_path,file_finish):file_name_list = os.listdir(file_path)file_list = []for i in file_name_list:a = file_path + '\\' + ifile_list.append(a)# print(a)data1 = pd.DataFrame(columns=['临时'])for file in file_list:data = pd.read_excel(file, sheet_name=0)names_list = data.columns.tolist()# print(names_list)# data.reindex(columns=names_list)data['临时'] = data[names_list[0]].astype(str) + data[names_list[1]].str[:2].astype(str)names_list.insert(names_list.index(names_list[2]), '临时')# print(names_list)data = data.reindex(columns=names_list)data = data.set_index([names_list[0], names_list[1]])data1 = data1.merge(data, how='outer', on='临时')# print(data1)# print(data1)# print(data[names_list[1]].str[:2])# print(data)data1["time"] = data1["临时"].str.extract('(\d+)')# print(df)data1["place"] = data1["临时"].str.extract('(\D+)', expand=False).str.strip()names_list1 = data1.columns.tolist()# print(names_list1)names_list1.insert(names_list1.index(names_list1[1]), 'time')# print(names_list1)names_list1.insert(names_list1.index('time') + 1, "place")data1 = data1.reindex(columns=names_list1[:-2])data1 = data1.drop(['临时'], axis=1)# data1 = data1.set_index(0)# print(names_list1[:-2])# print(data1.columns.tolist())names_list2 = data1.columns.valuesdata1 = data1.set_index(names_list2[1])data1.to_excel(file_finish)# ****面板数据合并格式********** #
#  年份   省份   变量1  变量2 ...
#  2003  重庆    123  1234
#  ...   ...    ...
# **********************## ****面板数据转截面数格式****** #
#  省份   年份   变量1  变量2 ...
#  重庆   2003   123  1234
#  ...   ...   ...   ...
# ************************** ## 读取需要转换的文件路径# 合并面板数据数据指定文件夹路径即可
file_read = r"C:\Users\ZhangX\Desktop\999测试"
# 文件保存路径
file_finish = r"C:\Users\ZhangX\Desktop\999测试\汇总.xlsx"if __name__ == '__main__':merge_panel(file_read,file_finish)# to_panel(file_read)# reshape_wide(file_read)

面板数据转截面数据、截面数据转面板数据、合并多个面板数据相关推荐

  1. 省级面板数据(2000-2019)十八:物质资本(原始数据、测算数据)(stata版本)

    省级面板数据(2000-2019)十八:物质资本(原始数据.测算数据)(stata版本) 数据来源:中国统计年鉴+EPS数据平台+各省统计年鉴 作者收集整理所得!!! 下载链接:https://bbs ...

  2. pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据

    作者:Paul 编者按: pandas提供了很多常用的数学和统计方法,本文中将用十分详细的例子来具体进行介绍:另外在许多数据分析工作中,缺失数据是经常发生的,将会具体介绍如何处理缺失数据.本文十分详细 ...

  3. 字段缺失_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据

    作者:Paul 编者按: pandas提供了很多常用的数学和统计方法,本文中将用十分详细的例子来具体进行介绍:另外在许多数据分析工作中,缺失数据是经常发生的,将会具体介绍如何处理缺失数据.本文十分详细 ...

  4. 2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的消费者负载均衡机制和数据积压问题 一.kafka ...

  5. 某天没有数据能查出来0数量_用Excel对纽约市出租车费数据探索性分析

    一.引言 背景:在纽约,游客们往往把自由女神象.帝国大厦.中央公园等视为纽约的象征, 但穿梭在人海中的出租车也是纽约靓丽的人文景观之一, 是其流动的风景线, 在纽约公共文化中别具魅力.本篇文章利用之前 ...

  6. 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践

    本文为微众银行大数据平台:周可在 nMeetup 深圳场的演讲这里文字稿,演讲视频参见:B站 自我介绍下,我是微众银行大数据平台的工程师:周可,今天给大家分享一下 Nebula Graph 在微众银行 ...

  7. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...

    excel表格中如何统计1月到12月的数据 我用的是Excel07版为你的表已经是存在的,并能力有限,所只能给你说下面这一种方法了,用着也单的!下边我做一个示范: 第一步 在Excel表格右侧空白任意 ...

  8. pandas索引复合索引dataframe数据、索引其中多个水平(level)的多个数据行(index rows from different levels)、使用元组tuple表达复合索引的指定行

    pandas索引复合索引dataframe数据.索引其中多个水平(level)的多个数据行(index rows from different levels and combine).使用元组tupl ...

  9. pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contain in list)

    pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contained in a li ...

最新文章

  1. 实体链接:信息抽取中的NLP的基础任务
  2. 智能&大数据时代,架构师思维的十个学习步骤(优化版)
  3. DNS服务搭建和正反区域解析
  4. Mongoose快速入门
  5. 中国石油大学计算机专业调剂信息,2014年中国石油大学(北京)计算机专业考研调剂信息(新)...
  6. python 文本相似度_【机器学习】使用gensim 的 doc2vec 实现文本相似度检测
  7. openGL es实现小实例
  8. javaWeb校园宿舍管理解析(二)
  9. 切换计算机用户指,切换用户提示计算机锁定
  10. java寻宝题目,神都夜行录寻宝答题答案大全 挖宝答题答案汇总
  11. 百练2706 麦森数
  12. 梁建章:我的鼠标 水泥《前程密码》
  13. 各个级别的教师资格证分别可以教什么阶段
  14. 【linux】将Linux里的文件上传 到gitee仓库
  15. 一款免杀远控,马子体积小
  16. 用Python实现地理探测器
  17. Beautiful Soup模块详解
  18. Adobe CS3安装程序在2003和XP SP1下无法安装的解决办法
  19. 图扑软件数字孪生 3D 风电场,智慧风电之海上风电
  20. mozilla 源码_每日新闻摘要:Mozilla的Firefox Premium计划

热门文章

  1. SpringBoot_开发者工具与单元测试
  2. overleaf 公式_Overleaf——LaTex学习
  3. java returning,通过Java从Postgresql获取RETURNING值
  4. Canny 算法的详解。
  5. js运算符功能和运算规则
  6. CentOS7.0修改DNS的方法
  7. Idea Easy API+YAPI实现接口动态发布和更新
  8. 驾驶证——科目一笔记(一)
  9. OSCP 学习:Kali Linux 基本命令
  10. webpack2+angular2 按需加载,优化首屏速度