pandas处理Excel基本方法

学习总结主要参考了视频内容 https://www.bilibili.com/video/BV1hk4y1C73S?p=2&vd_source=7771577bd8c0c69d43ee27a1c1ac8a1a
主要总结了使用pandas处理Excel表格,以及将Excel数据显示为图表。

1.用pandas创建一个Excel表格:使用 to_excel('pandas1.xlsx') ‘创建

import pandas as pd

df = pd.DataFrame()
df.to_excel('pandas1.xlsx')
print('done!')

成功创建:

pandas处理Excel基本方法

2.简单的往Excel加入数据:

import pandas as pd

zd = {
    'id':[i for i in range(1,6)],
    'name':['Jenny','Danny','Li Ming','Tim','Wang']
}
df = pd.DataFrame(zd)
df.to_excel('pandas1.xlsx')
print('done!')

pandas处理Excel基本方法

3.选择某一列作为索引: df = df.set_index('id')

import pandas as pd

zd = {
    'id': [i for i in range(1, 6)],
    'name': ['Jenny', 'Danny', 'Li Ming', 'Tim', 'Wang']
}

df = pd.DataFrame(zd)
df = df.set_index('id')

df.to_excel('pandas1.xlsx')
print('done!')

4.打开Excel表格(openpyxl包需要安装好):

import pandas as pd

pd = pd.read_excel('Pandas_study.xlsx',engine='openpyxl')
print(pd.shape)
print(pd.index)
print(pd.columns)

pandas处理Excel基本方法

5.查看表格前几行或者后几行:

import pandas as pd

pd = pd.read_excel('Pandas_study.xlsx',engine='openpyxl')
print(pd.head(3))
print(pd.tail(3))

pandas处理Excel基本方法

6特殊情况:

情况1:第一行为脏数据,不需要:

pandas处理Excel基本方法
可以使用 pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=1)
import pandas as pd

pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=1)
print(pd)

pandas处理Excel基本方法
情况2:没有columns名字:
pandas处理Excel基本方法
使用: pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=None)
pandas处理Excel基本方法
可以自己设置columns:
import pandas as pd

pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=None)
print(pd)
pd.columns=['id','name','sex']
print(pd)

pandas处理Excel基本方法
保存前你会发现左边的0-4是自动生成的index,保存也会加上,为了不要可以写成index=False:
import pandas as pd

pds = pd.read_excel('pandas1.xlsx', engine='openpyxl', header=None)
pds.columns = ['id', 'name', 'sex']
pds.to_excel('pandas2.xlsx', index=False)

pandas处理Excel基本方法

7读取文件把某行设置为index:

import pandas as pd

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl',index_col='id')
print(pds)

pandas处理Excel基本方法

8行列单元格操作

import pandas as pd

s1 = pd.Series([1, 2, 3], index=[1, 2, 3], name='one')
s2 = pd.Series([11, 22, 33], index=[1, 2, 3], name='two')
s3 = pd.Series([41, 22, 83], index=[1, 2, 3], name='three')

s = pd.DataFrame({s1.name: s1, s2.name: s2, s3.name: s3})
print(s)
s0 = pd.DataFrame([s1,s2,s3])
print(s0)
s0=s0.T
print(s0)

pandas处理Excel基本方法

9.Excel表格特殊情况读取:

pandas处理Excel基本方法
这种情况直接读取会有问题: pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pandas处理Excel基本方法
所以这种情况我们需要对读取文件进行设置:
import pandas as pd

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl',skiprows=7,usecols='D:F',index_col='id')
print(pds)

pandas处理Excel基本方法

10.计算列:

pandas处理Excel基本方法
我们让C,D列进行计算,如下:
import pandas as pd

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')

pds['x*y']=pds['x']*pds['y']

for i in range(0,len(pds['x'])):
    pds['x-y'].at[i]=pds['x'].at[i]-pds['y'].at[i]

print(pds)

pandas处理Excel基本方法
可以把这些数据保存到Excel表格。

11.排序:

pandas处理Excel基本方法
import pandas as pd

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.sort_values(by='y',inplace=True,ascending=False)

print(pds)

pandas处理Excel基本方法

12.apply()使用

pandas处理Excel基本方法
import pandas as pd

def num5_20(y):
    return 5<y<20

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds = pds.loc[pds['y'].apply(num5_20)]

print(pds)

或者使用lambda表达式

import pandas as pd

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds = pds.loc[pds['y'].apply(lambda a: 5 < a < 20)]

print(pds)

pandas处理Excel基本方法

13.Excel表数据展示柱状图:

pandas处理Excel基本方法
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')

pds.plot.bar(x='name',y='x')

plt.bar(pds.name,pds.x)
plt.show()

pandas处理Excel基本方法
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.plot.bar(x='name', y=['x', 'y'], color=['yellow', 'orange'], title='show')
plt.show()

pandas处理Excel基本方法
使用 stacked=True进行叠加:
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.plot.bar(x='name', y=['x', 'y'],stacked=True, color=['yellow', 'orange'], title='show')
plt.show()

pandas处理Excel基本方法
转为水平的使用 plot.barh
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.plot.barh(x='name', y=['x', 'y'],stacked=True, color=['yellow', 'orange'], title='show')
plt.show()

pandas处理Excel基本方法
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl',index_col='name')
pds['x'].plot.pie(title='name_x',startangle=10,fontsize=6)

plt.show()

pandas处理Excel基本方法
折线图:
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl', index_col='name')
pds.plot(y=['x', 'y'])
plt.title('name-x-y', fontsize=12, fontweight='bold')

plt.show()

pandas处理Excel基本方法
散点图:
import pandas as pd
import matplotlib.pyplot as plt

pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.plot.scatter(x='name', y=['x'])
plt.title('name-x-y', fontsize=12, fontweight='bold')
plt.show()

pandas处理Excel基本方法

14.相关系数函数corr()

series.corr(other[, method, min_periods])

用途:
检查两个变量之间变化趋势的方向以及程度,值范围-1到+1,0表示两个变量不相关,正值表示正相关,负值表示负相关,值越大相关性越强。

15.合并表格

有以下两个表格:

pandas处理Excel基本方法
pandas处理Excel基本方法
我们需要把表合并: merge&#xFF08;&#xFF09;
import pandas as pd

pds1 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='name',index_col='id')
pds2 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='score',index_col='id')

pds = pds1.merge(pds2,on='id')

print(pds)

pandas处理Excel基本方法
我们发现少了一个学生,所以代码需要修改为: pds = pds1.merge(pds2, how='left', on='id')
pandas处理Excel基本方法
可以进行保存:
import pandas as pd

pds1 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='name', index_col='id')
pds2 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='score', index_col='id')

pds = pds1.merge(pds2, how='left', left_on='id', right_on='id').fillna(0)
pds.score = pds.score.astype('Int64')

pds.to_excel('pandas1.xlsx', sheet_name='name_score')

pandas处理Excel基本方法

但我们会发现遇到一个问题,pandas1.xlsx被重写,只剩下name_score一个sheet中,原本的name,score没有了,只有最后一个存储的数据,并不符合我们的需求。解决方法如下:

import pandas as pd

pds1 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='name', index_col='id')
pds2 = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='score', index_col='id')

pds = pds1.merge(pds2, how='left', left_on='id', right_on='id').fillna(0)
pds.score = pds.score.astype('Int64')

writer = pd.ExcelWriter('pandas1.xlsx')
pds1.to_excel(writer, sheet_name='name')
pds2.to_excel(writer, sheet_name='score')
pds.to_excel(writer, sheet_name='name_score')
writer.save()

pandas处理Excel基本方法

16数据校验

pandas处理Excel基本方法
import pandas as pd
def score_test(row):
    try:
        assert 0  row.score  100
    except:
        print(row.rname, 'has a wrong score')

pds = pd.read_excel('pandas1.xlsx', engine='openpyxl', sheet_name='name_score', index_col='id')
pds.apply(score_test, axis=1)

pandas处理Excel基本方法
axis 参数指定在 DataFrame 中应用特定方法或函数的方向。axis=0 代表函数是列式应用,axis=1 表示函数是行式应用在 DataFrame 上。
一个 DataFrame 对象有两个轴,分别是 “axis=0” 和 “axis=1″ ,”axis=0” 代表”跨行”,”axis=1″代表”跨列”,显而易见Series 与 DataFrame 共享相同的 “axis=0” 方向——它沿着跨行的方向。
pandas处理Excel基本方法
不理解可以看: https://zhuanlan.zhihu.com/p/444973350

Original: https://blog.csdn.net/weixin_43788986/article/details/125854545
Author: <编程路上>
Title: pandas处理Excel基本方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751585/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Docker Desktop部署Superset

    环境操作系统:Windows 10 家庭版Docker Desktop Version:v4.10.1 一、安装Docker Desktop For Window 官网链接地址:h…

    Python 2023年8月14日
    070
  • 性能调优读书笔记(上篇)

    一、Amdahl定律 加速=优化前耗时/优化后耗时比公式图: 二、设计模式 1、单例模式 静态内部类的方式: /** * &#x5185;&#x90E8;&…

    Python 2023年10月23日
    040
  • Python与GIS

    Python矢量与栅格数据处理 原创 孟祥帅 祥帅的小屋 2022-10-21 18:55 发表于山东 持续更新ing,欢迎各位点赞关注哦! 1. Python处理栅格影像 1.1…

    Python 2023年8月24日
    038
  • onnx-modifier:ONNX可视化编辑

    欢迎转载。转载请注明原文链接 。 本文可能未及时更新,请点击onnx-modifier github仓库查看最新版本和特性。 ONNX(Open Neural Network Ex…

    Python 2023年8月9日
    082
  • geopandas学习(四) 地图可视化

    geopandas学习(四) 地图可视化 文章参考:参考 1.基础可视化 geopandas使用matplotlib作为绘图后端,使用plot()方法对GeoSeries或GeoD…

    Python 2023年9月2日
    056
  • python对象不接受参数什么意思___new=TypeError:object()不接受参数

    我希望我的类能够自己创建对象,我看到了通过”new”实现这一点,但很明显,它不起作用,因为我遇到了以下错误: 类型错误:object()不带参数 所以有一个…

    Python 2023年9月24日
    043
  • 运算符

    算数运算符 算术运算符:用来完成基本算术运算的符号。 运算符 说明 实例 结果 + 加 12.45 + 15 27.45 – 减 4.56 – 0.26 4…

    Python 2023年6月9日
    057
  • Python 处理Excel总结(1)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun 前言 学习…

    Python 2023年8月8日
    048
  • 可视化常见绘图(三)面积图

    面积图 一.面积图简介 面积图又叫区域图。 它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,这样一个填充区域我们叫做面积,颜色的填充可…

    Python 2023年9月3日
    050
  • python方差分析模型的预测结果怎么看_statsmodels中方差分析表结果解析

    引言 通常我们在对多个变量进行统计分析的时候,结果的汇总和整理需要耗费大量的时间和精力,稍有不慎还有可能出现错误。因此在对多个变量统计分析的时候,使用自动化的脚本对结果进行整理和汇…

    Python 2023年8月20日
    043
  • 关于pdd_zues接口probuf,zip处理后传输如何写

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/pythonywy/p/16292794.htmlAut…

    Python 2023年6月15日
    067
  • Matplotlib介绍,基本操作,及美化

    Matplotlib介绍,基本操作,及美化 Matplotlib介绍 * 设置图形大小时 figsize 与 dpi 的关系[^1] Linux更换字体[^2][^3] Matpl…

    Python 2023年9月5日
    058
  • 【C++】学生管理系统

    整体思路: 实现代码 #include #include #include<string> #define line for (int n = 0; n #define…

    Python 2023年6月12日
    087
  • Flask – 数据库 (常用查询)

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

    Python 2023年8月14日
    059
  • 泰坦尼克号幸存预测项目

    泰坦尼克号幸存预测 本次项目主要围绕Kaggle上的比赛题目: “给出泰坦尼克号上的乘客的信息, 预测乘客是否幸存” 进行数据分析。内容主要是通过jupte…

    Python 2023年9月4日
    049
  • Matplotlib(含代码演示)

    参考说明: 1.matplotlib官方教程2.AI算法工程师手册3.dts手册 先体验一下简单的绘图: import matplotlib.pyplot as plt impor…

    Python 2023年9月4日
    044
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球