使用pandas处理excel数据

读取Excel

首先通过pandas提供了read_excel函数来支持读取excel表里的数据

pandas.read_excel(
io,  #string类型文件的路径或url.
sheet_name=0,  #指定的excel中的具体某个或某些表的表名或表索引.
header=0,  #以哪些行作为表头,也叫做列名.
names=None, #自己定义一个表头(列名).
index_col=None,  #将哪些列设为索引.
usecols=None,  #指定读取excel中哪些列的数据,默认为None,表示读取全部.
squeeze=False,  #默认为False,如果解析的数据只包含一列,则返回一个Series。
dtype=None,  #接收dict,设置数据类型,具体到每列.
engine=None,  #如果io不是缓冲区或路径,则必须将其设置为标识io。可接受的值是None、“xlrd”、“openpyxl”或“odf”.
converters=None,  #类型为字典(dict).默认为None.进行值转换。{列名:str}
true_values=None,  #默认:None,接收一个list,将在list中的值转换成True,只有在整列值都能转换成bool值时才能成功。
false_values=None,  #默认:None,接收一个list,将在list中的值转换成False,只有在整列值都能转换成bool值时才能成功。
skiprows=None,  #跳过excel中的某些行来读取数据.
nrows=None,  #指定要读取excel表中哪些行的数据.
na_values=None,  #设置指定值填充为NaN.
keep_default_na=True,
verbose=False, #布尔类型, 默认为 False.显示列表中除去数字列,NA值的数量.
parse_dates=False,  #指定解析成日期格式的列.
date_parser=None,  #funtion.指定解析日期格式的函数.
thousands=None, #将字符串列解析为数字的数千个分隔符。
comment=None, #将一个或多个字符传递给此参数以指示输入文件中的注释。
skipfooter=0,  #省略指定行数的数据,从尾部数的行开始。
convert_float=True, #布尔, 默认为 True.将积分浮点数转换为int(即1.0 - > 1)。
mangle_dupe_cols=True,  #布尔类型,默认为True.重复列将被指定为“X”、“X.1”、“X.N”.
**kwds)

将获取到的DataFrame进行数据处理

import matplotlib as mpl
import pandas as pd
import xlrd
import openpyxl
from io import BytesIO
import base64
import matplotlib.pyplot as plt
import numpy as np

data = pd.read_excel("E:\\pycharm\\get_commitNum_from_gitlab\\项目统计表格\\2021年1-3月代码提交汇总.xls",skipfooter=3)

print(data.index)                # 查看索引 RangeIndex(start=0, stop=26, step=1)
print(data.values)               # 查看数值
print(data.shape)                # 查看行数、列数  (26, 6)
print(data.head( 5 ))            # 查看前5行
print(data.tail( 3 ))            # 查看后3行
print(data['总计代码'].unique())   # 查看唯一值  nunique()返回的是唯一值的个数
print(data.columns)              # 查看data的列名
data.sort_index()                # 按索引排序
data.sort_values()               # 按数值排序sort_values(by,ascending=True, inplace=False,na_position=‘last’)
data.isnull()                    # 查找data中出现的空值
data.sort_index()                # 索引排序
data.sort_values()               # 值排序

pd.merge(data,data,on=[""],how='left')# 合并,left_index将左侧的行索引用作其连接键 right_index将右侧的行索引用作其连接键
# on是用于连接的列名,how是连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
pd.concat([data,data])         # 合并
pd.pivot_table( data )           # 用df做data透视表(类似于Excel的数透)

print(data.reset_index(drop=True)) # 重置索引 drop为不想保留原来的index
data.reindex()                   # 重置索引,如下示例
data=data.reindex(columns=['商品名称', '规格', '对应车型类别', '备注', '新增的一列'], fill_value='新增的一列要填的值')

a=data['x']                      # 取列名为'x'的列,格式为series
b=data[['x']]                    # 取列名为'x'的列,格式为Dataframe
c=data[['w','z']]                # 取多列时需要用Dataframe的格式
data.loc['A']                    # 取行名为'A'的行
data.loc[:,['工程名称','总计代码']] # 表示选取所有的行以及columns为x,z的列
data['name'].values              # 取列名为'name'的列的值(取出来的是array而不是series)取单行后是一个Series,Series有index而无columns,可以用name来获取单列的索引
print(data.loc[(data['总计代码'] < -0),:])#查找总计代码为负的行
data.loc[data['总计代码'] == 0, "总计代码"] = "John" #赋值 总计代码等于0的值改为John
data.loc["行标签","列标签"]
data.loc['a':'b']                 #选取ab两行数据
data.loc[:,'one']                 #选取one列的数据

data.notnull()                   # 非空值
data.dropna()                    # 删除空值
data.dropna()                    # 删除有空值的行
data.dropna(axis=1)              # 删除有空值的列
data.dropna(how='all')           # 删除所有值为Nan的行
data.dropna(thresh=2)            # 至少保留两个非缺失值
data.strip()                     # 去除列表中的所有空格与换行符号
data.fillna(0)                   # 将空值填充0
data.replace(1, -1)              # 将1替换成-1

data.fillna(100)                           # 填充缺失值为100
data.fillna({'语文':100,'数学':100,})        # 不同列填充不同值
data.fillna(method='ffill')                 # 将空值填充为上一个值
data.fillna(method='bfill')                 # 将空值填充下一个值
data.fillna(method='bfill',limit=1)         # 将空值填充下一个值,限制填充数量为1

df.to_excel('winner.xlsx',index = False)    #保存为Excel表

将处理好的数据用plt展示并保存为HTML文件

import matplotlib as mpl
import pandas as pd
import xlrd
import openpyxl
from io import BytesIO
import base64
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_excel("E:\\pycharm\\get_commitNum_from_gitlab\\项目统计表格\\2021年1-3月EP12代码提交汇总.xls",skipfooter=3)
# df=df.sort_values(by='提交次数') 
# df.loc[3, '总计代码'] = 0
print(df)
print(df["总计代码"])
fig = plt.figure(figsize=(12,4))
plt.plot(df["工程名称"],df["总计代码"],label='lines of code',linewidth=2,color='r',marker='o',
markerfacecolor='blue',markersize=10)
fig.autofmt_xdate() #自动根据标签长度进行旋转
plt.xlabel("Submission times")
plt.ylabel('lines of code')
plt.title("Submission times and lines of code")
plt.legend()
plt.grid()
# plt.show() #这里生成HTML时需要注释 不然会生成空白的HTML文件

# 转base64
figfile = BytesIO()
plt.savefig(figfile, format='png')
print(figfile)
figfile.seek(0)
figdata_png = base64.b64encode(figfile.getvalue()) # 将图片转为base64
figdata_str = str(figdata_png, "utf-8") # 提取base64的字符串,不然是b'xxx'

# 保存为.html
html = '<img src=\"data:image/png;base64,{}\"/>'.format(figdata_str)
filename = '1-3月代码行数与项目折线图a.html'
with open(filename, 'w') as f:
    f.write(html)

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当涉及到处理Excel数据时,PandasPython中最常用的库之一。它提供了强大的功能,可以方便地读取、处理和分析Excel数据。下面是一个综述,介绍了使用Pandas处理Excel数据的常见操作和技巧。 1. 导入Pandas库: 首先,你需要导入Pandas库。通常,我们使用`import pandas as pd`语句将其导入,并将其命名为`pd`,以便在后续代码中使用。 2. 读取Excel文件: 使用Pandas的`read_excel()`函数可以读取Excel文件。你只需要提供文件路径作为参数即可。例如,`df = pd.read_excel('data.xlsx')`会将Excel文件读取到名为`df`的DataFrame对象中。 3. 查看数据: 可以使用`head()`方法查看DataFrame的前几行数据,默认显示前5行。例如,`df.head()`会显示DataFrame的前5行数据。 4. 数据清洗和转换: 在处理Excel数据时,经常需要进行数据清洗和转换。Pandas提供了一系列方法来处理缺失值、重复值、异常值等。例如,使用`dropna()`方法可以删除包含缺失值的行或列,使用`fillna()`方法可以填充缺失值,使用`drop_duplicates()`方法可以删除重复值等。 5. 数据筛选和排序: 使用Pandas可以根据特定条件筛选数据,并对数据进行排序。你可以使用布尔索引来筛选数据,例如,`df[df['列名'] > 10]`将返回所有满足条件的行。使用`sort_values()`方法可以对数据进行排序,例如,`df.sort_values('列名', ascending=False)`将按照指定列的降序排序数据。 6. 数据分组和聚合: 使用Pandas的`groupby()`方法可以对数据进行分组,并使用聚合函数进行汇总。你可以根据某一列或多列进行分组,并应用各种聚合函数,如求和、平均值、计数等。例如,`df.groupby('列名')['另一列名'].sum()`将按照指定列对数据进行分组,并计算指定列的总和。 7. 数据可视化: Pandas还提供了与Matplotlib集成的绘图功能,可以方便地对数据进行可视化。你可以使用DataFrame的`plot()`方法绘制各种类型的图表,如折线图、柱状图、散点图等。例如,`df.plot(kind='bar', x='x轴数据列名', y='y轴数据列名')`会绘制一个柱状图。 以上是使用Pandas处理Excel数据的一些常见操作和技巧的综述。当然,Pandas还提供了许多其他功能和方法,适用于不同的数据处理需求。希望这个综述能对你在处理Excel数据时提供一些帮助!如果你需要更具体的示例或有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值