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

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

import pandas as pddf = pd.DataFrame()
df.to_excel('pandas1.xlsx')
print('done!')

成功创建:

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

import pandas as pdzd = {'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!')

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

import pandas as pdzd = {'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 pdpd = pd.read_excel('Pandas_study.xlsx',engine='openpyxl')
print(pd.shape)
print(pd.index)
print(pd.columns)

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

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

6特殊情况:

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

可以使用pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=1)

import pandas as pdpd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=1)
print(pd)


情况2:没有columns名字:

使用:pd = pd.read_excel('pandas1.xlsx',engine='openpyxl',header=None)

可以自己设置columns:

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


保存前你会发现左边的0-4是自动生成的index,保存也会加上,为了不要可以写成index=False:

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

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

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

8行列单元格操作

import pandas as pds1 = 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)

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


这种情况直接读取会有问题:pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')

所以这种情况我们需要对读取文件进行设置:

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

10.计算列:


我们让C,D列进行计算,如下:

import pandas as pdpds = 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)


可以把这些数据保存到Excel表格。

11.排序:

import pandas as pdpds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds.sort_values(by='y',inplace=True,ascending=False)#ascending默认为True,从小到大排序,False为从大到小排序print(pds)

12.apply()使用

import pandas as pddef num5_20(y):return 5<y<20pds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
pds = pds.loc[pds['y'].apply(num5_20)]print(pds)

或者使用lambda表达式

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

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

import pandas as pd
import matplotlib.pyplot as pltpds = pd.read_excel('pandas2.xlsx', engine='openpyxl')
#方法一
pds.plot.bar(x='name',y='x')
#方法二
plt.bar(pds.name,pds.x)
plt.show()

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


使用stacked=True进行叠加:

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


转为水平的使用plot.barh

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

import pandas as pd
import matplotlib.pyplot as pltpds = pd.read_excel('pandas2.xlsx', engine='openpyxl',index_col='name')
pds['x'].plot.pie(title='name_x',startangle=10,fontsize=6)
# pds.plot.barh(x='name', y=['x', 'y'],stacked=True, color=['yellow', 'orange'], title='show')
plt.show()


折线图:

import pandas as pd
import matplotlib.pyplot as pltpds = 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()


散点图:

import pandas as pd
import matplotlib.pyplot as pltpds = 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()

14.相关系数函数corr()

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

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

15.合并表格

有以下两个表格:


我们需要把表合并:merge()

import pandas as pdpds1 = 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)


我们发现少了一个学生,所以代码需要修改为:pds = pds1.merge(pds2, how='left', on='id')

可以进行保存:

import pandas as pdpds1 = 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', on='id')
pds = pds1.merge(pds2, how='left', left_on='id', right_on='id').fillna(0)
pds.score = pds.score.astype('Int64')#或者(int)pds.to_excel('pandas1.xlsx', sheet_name='name_score')

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

import pandas as pdpds1 = 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', on='id')
pds = pds1.merge(pds2, how='left', left_on='id', right_on='id').fillna(0)
pds.score = pds.score.astype('Int64')#或者(int)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()

16数据校验

import pandas as pd
def score_test(row):try:assert 0 <= row.score <= 100except: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)  # axis=0为从上到下


axis 参数指定在 DataFrame 中应用特定方法或函数的方向。axis=0 代表函数是列式应用,axis=1 表示函数是行式应用在 DataFrame 上。
一个 DataFrame 对象有两个轴,分别是 “axis=0" 和 “axis=1“ ,“axis=0” 代表“跨行”,“axis=1“代表“跨列”,显而易见Series 与 DataFrame 共享相同的 “axis=0" 方向——它沿着跨行的方向。

不理解可以看:https://zhuanlan.zhihu.com/p/444973350

pandas处理Excel基本方法相关推荐

  1. python使用教程pandas-python使用pandas处理excel的方法

    python使用pandas处理excel的方法 一.配置环境 1.pandas依赖处理Excel的xlrd模块,安装命令是:pip install xlrd 2.安装pandas模块还需要一定的编码 ...

  2. python3打包成exe把openpyxl和pandas_Python openpyxl、pandas操作Excel方法简介与具体实例...

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  3. python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  4. python 将excel文件转换为txt文件_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  5. python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  6. python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  7. python excel文件转换成字符串_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  8. Python pandas 保存Excel自动调整列宽的方法及示例代码

    本文主要介绍Python中,使用pandas.ExcelWriter保存Excel文件数据时,自动判断调整列的宽度方法,以及相关的示例代码. 原文地址:Python pandas 保存Excel自动调 ...

  9. 数据分析从零开始实战,Pandas读写Excel/XML数据

    点击查看第一篇文章: 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析_ 数据分析 从零开始到实战,Pandas读写CSV数据_ 数据分析 从零开始到实战,Pandas读写CSV数据 ...

最新文章

  1. linux下文件系统不丢数据扩容方法
  2. java uml图中的关系_UML类图中的关系
  3. Java语言基础(数组)
  4. TCP/IP总结(4)TCP 之3次握手
  5. java抽象类与接口区别6_java基础知识(6)---抽象类与接口
  6. bubble气泡特效
  7. CentOS7 DNS的添加
  8. java常考设计模式_java笔试常考的几种设计模式
  9. mysql_query
  10. Java 注解(Java Annotation)
  11. vs C3861 “rand”: 找不到标识符 ConsoleApplication1
  12. 开源的魔兽世界参考架构——mangos--网络游戏引擎BigWorld 服务器介绍
  13. 孙玄:分布式系统选主怎么玩
  14. Android手机屏幕投影到电脑工具
  15. 石墨烯 量子计算机,又是石墨烯,这次对量子计算机下手了
  16. 使用Python模块webbrowser实现自动打开网页/刷新网页
  17. 利用 MATLAB 编程实现 Newton 法与阻尼 Newton 法
  18. 基于线程池实现多线程任务
  19. 【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(七)2.5 线性表的链式表示和实现1
  20. 苹果怎么换行打字_好玩的微信空白朋友圈怎么发?教程来了!

热门文章

  1. wm_concat(column)结果为clob的解决办法
  2. 谨慎使用rm -rf
  3. mysql dba 是什么_mysql DBA技能
  4. linux 32位系统运行eclipse报错:eclipse: symbol lookup error,.so: undefined symbol: XXXg_bus_own_name
  5. 揭露广告联盟不为人知的骗局
  6. mht文件转为html文件(javax.mail方式)
  7. rim lighting
  8. 文件的打开和关闭,fopen()和fclose
  9. 键盘上一些常用按键的ASCII码值
  10. 一知半解学CubeMX——GPIO:LED