• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

使用pandas处理excel数据常用代码

武飞扬头像
陈南GISer
帮助1

使用pandas处理excel数据常用代码

读取数据

df = pd.read_excel('C:/Users/啊啊啊啊/Desktop/二次/提交/所有数据合并.xlsx')

对多个列字段相同的行进行去重

df.drop_duplicates(subset=["采购人","中标金额"],keep="first",inplace=True)#inplace=True表示对数据进行修改

转换日期字段为时间格式,浮点型格式

df.loc[:, "发布日期"] = pd.to_datetime(df_quanbu.loc[:, "发布日期"], errors='coerce')
df['中标金额'].astype('float64')

去除科学计数法显示

pd.options.display.float_format = '{:.10f}'.format

按照年,月,周对数据进行分组

df_year = df_quanbu.groupby(df_quanbu['发布日期'].dt.year)#通过更改year参数实现

求和函数,平均值也是一样的方法,换函数就行

yearDf = df_year.sum()

对某个字段求和

df_china = df['中标金额'].sum()

提取每年1-6月的数据,先提取所有1-6月数据,再按照年分组

dfyear_1_6 = df_quanbu[df_quanbu['发布日期'].dt.month.isin(np.arange(1, 7))]#arange(1, 7))表示包含【123456】不包含7

df_year_1_6 = dfyear_1_6.groupby(dfyear_1_6['发布日期'].dt.year)

打印每列的数据类型

df.dtypes

多个关键词数据筛选

df_华北 = df[df['省份地区'].str.contains('北京|天津|河北|山西|内蒙古')]

保留两位小数

df_china.round(2)

除法

df_xibei = df_xibei / df_china

去除该列最后两个字符,这里我是用来删除单位【元】的

df2['中标金额'] = df2['中标金额'].map(lambda x: str(x)[:-1])

提取某个时间段数据

#数据处理_时间筛选
open_day='2019-01-01'
close_day='2022-06-30'
con1=df['发布日期']>=open_day
con2=df['发布日期']<close_day
df2 = df[con1&con2]

绘制饼图

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 构建序列
data1 = pd.Series({'西北':df_xibei,'华南':df_huanan,'西南':df_xinan,'华中':df_huazhong,'东北':df_dongbei,'华东':df_huadong,'华北':df_huabei})
# 将序列的名称设置为空字符,否则绘制的饼图左边会出现None这样的字眼
data1.name = ''
# 控制饼图为正圆
plt.axes(aspect = 'equal')
# plot方法对序列进行绘图
data1.plot(kind = 'pie', # 选择图形类型
           autopct='%.1f%%', # 饼图中添加数值标签
           radius = 4, # 设置饼图的半径
           startangle = 180, # 设置饼图的初始角度
           counterclock = False, # 将饼图的顺序设置为顺时针方向
           title = '不同地区2021年度总销售额占比', # 为饼图添加标题
           wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}, # 设置饼图内外边界的属性值
           textprops = {'fontsize':10, 'color':'black'} # 设置文本标签的属性值
          )
# 显示图形

plt.show()
学新通

学新通

循环批量处理文件夹内数据——数据统计

import pandas as pd
import os
import xlwt
import numpy as np

def main():
    filename = os.listdir(r'C:/Users/啊啊啊啊/Desktop/二次/异常值/二次异常值校对/新兴')
    for i in range(len(filename)):
        try:
            df = pd.read_excel('C:/Users/啊啊啊啊/Desktop/二次/异常值/二次异常值校对/新兴/'   filename[i])
            #对数据进行二次去重
            df.drop_duplicates(subset=["采购人","中标金额"],keep="first",inplace=True)
            #转换数据类型为 datetime64[ns]
            df.loc[:, "发布日期"] = pd.to_datetime(df.loc[:, "发布日期"], errors='coerce')
            
            #去除科学计数法显示
            pd.options.display.float_format = '{:.10f}'.format
            #统计每年销售额
            df_year = df.groupby(df['发布日期'].dt.year)
            yearDf = df_year.sum()
            yearDf.drop(['Unnamed: 0','Unnamed: 0.1','Unnamed: 0.2','Unnamed: 0.2','Unnamed: 0.3','序号'], axis=1, inplace=True)
            
            #统计每年上半年销售额
            #提取1-6月数据
            dfyear_1_6 = df[df['发布日期'].dt.month.isin(np.arange(1, 7))]

            df_year_1_6 = dfyear_1_6.groupby(dfyear_1_6['发布日期'].dt.year)
            df_1_6 = df_year_1_6.sum()
            df_1_6.drop(['Unnamed: 0','Unnamed: 0.1','Unnamed: 0.2','Unnamed: 0.2','Unnamed: 0.3','序号'], axis=1, inplace=True)

            yearDf.to_excel('C:/Users/啊啊啊啊/Desktop/二次/时间/time/'   filename[i])
            df_1_6.to_excel('C:/Users/啊啊啊啊/Desktop/二次/时间/time/上半年'   filename[i])

            print(filename[i] '********文件处理成功')
        except Exception as e:
            pass
        continue
        
        
if __name__ == "__main__":
    main()
学新通

批量拆分文件夹内所有2021年数据

import pandas as pd
import os
import xlwt

def main():
    filename = os.listdir(r'c:\Users\啊啊啊啊\Desktop\二次\异常值\二次异常值校对\传统')
    for i in range(len(filename)):
        try:
            
            df = pd.read_excel('C:/Users/啊啊啊啊/Desktop/二次/异常值/二次异常值校对/传统/'   filename[i])
            

            df.loc[:, "发布日期"] = pd.to_datetime(df.loc[:, "发布日期"], errors='coerce')
            df_2021 =df.发布日期.apply(lambda x: x.year ==2021)
            df_2021 = df[df_2021]

        
            df_2021.to_excel('C:/Users/啊啊啊啊/Desktop/二次/2021_'   filename[i])

            print(filename[i] '********文件处理成功')
        except Exception as e:
            pass
        continue
        
        
if __name__ == "__main__":
    main()
学新通

批量合并文件夹内excel文件

import os
import pandas as pd

dir = r'C:\Users\啊啊啊啊\Desktop\二次\提交数据'
filenames = os.listdir(dir)
index = 0
dfs = []
for name in filenames:
	print(index)
	dfs.append(pd.read_excel(os.path.join(dir,name)))
	index  = 1 #为了查看合并到第几个表格了
df = pd.concat(dfs)
df.to_excel('C:/Users/啊啊啊啊/Desktop/二次/提交数据/所有数据合并.xlsx',index = False)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhajika
系列文章
更多 icon
同类精品
更多 icon
继续加载