本文主要针对Python处理Excel & CSV文件的应用。所有代码均实例化代入且逐条备注解释。

全文逐条手工输入整理,可能会产生错误之处,还请指正。

之后会陆续整理 “爬虫” 与 “金融量化分析” 两个文档

#   --------------------------------------------------------------------------------------------

DataFrame:二维数据,相当于Excel中一整个sheet表格,含多行多列(以下简称df)
Series:一维数据,相当于Excel中一行或一列
df.index:索引名
df.columns:列名

基础:Excel & CSV 数据的读取/建立/保存

1. 读取数据
1.1读取EXCEL数据
路径='C:/pandas/读取文件.xlsx'
数据源=pd.DataFrame(pd.read_excel(路径,header=None,names=['编号','姓名','年龄','日期'],index_col='编号'))
# 将'编号','姓名','年龄','日期'设为列名,同时将编号列作为索引列1.2 读取CSV数据
路径='C:\pandas\读取文件.txt'
数据源=pd.DataFrame(pd.read_csv(r'路径',sep='^'))
# 特别注意"/"&"\"的差异("\"为直接复制文件位置的地址,下条代码需为 r'路径')
# CSV文件需要特别注意分隔符的运用,此处使用 ‘ ^ ’ 作为分隔符2.建立数据
2.1
数据=pd.Series(['Ham','男','20','2010-10-1'],index=['姓名','性别','年龄','生日'])
2.2
字典1={'姓名':'Ham','性别':'男','年龄':20,'日期':'2010-10-1'}
字典2={'姓名':['Ham','Jack'],'年龄':[18,20]}
数据1=pd.Series(字典1)
数据2=pd.DataFrame(字典2)
2.3
列表1=['姓名','性别','年龄','日期']
列表2=['Ham','男',20,'2010-10-1']
数据=pd.Series(列表2,index=列表1)3.保存数据
数据源.to_excel(路径) 

一、数据查询/筛选(单一条件/多条件筛选):
 如果被查询数据中含有日期,需要将日期作为索引列:1.首先将日期列设为索引   2.将日期列设置为日期格式   3. 将日期列进行排序

路径= 'C:/pandas/透视.xlxs'
数据=pd.read_excel(r'路径',index_col='出生日期')    print(数据.loc['1949-10-1','化学'])
# 查询行为1949-10-1,列为化学的值print(数据.loc['1949-10-1',['化学','英语','物理']])
# 在化学or英语or物理列,查询行为1949-10-1的值,print(数据.loc['1949-10-1':'1952-10-1',['化学','英语','物理']])
# 查询行从1949-10-1至1952-10-1,列为化学or英语or物理的值print(数据.loc['1949-10-1':'1952-10-1',['化学':'物理']])
# 查询行从1949-10-1至1952-10-1,列为化学至物理之间的值print(数据.loc[(数据['化学']>=80)&(数据['物理']>=90)])
# 查询化学>=80分且物理>=90分的值数据.loc[数据['性别']=='男','称呼']='先生'
# 新增称呼列,将性别列为男的,定义为先生数据1=数据.loc[2:4]
# 筛选1~4行的数据条件=数据['性别']=='男'
# 筛选出性别为男的数据条件='性别'=='男'and 总分>=120“
# 筛选出性别为男且总分>=120的值条件="姓名 in ['王五','赵六']"
# 筛选出姓名为王五or赵六的的值条件=数据['姓名'].str.startswith('王')
# 筛选出姓名列首字为王姓的人的值条件=数据['姓名'].str.endwith('五')
# 筛选出姓名列以五字结尾的人的值条件=数据['地址'].str.contains('上海')
# 筛选出地址列中含有上海的值条件=数据['地址'].str.contains('[a-cA-C]栋')
# 筛选出地址中含有小写a~c栋或大写A-C栋的值  ([a-cA-C]为正则表达式)print(数据[条件])print(数据.query(条件))
# 输入query后可自动识别字符串
数据=pd.read_excel(r'路径',index_col='出生日期',parse_dates=['出生日期'])
数据1=数据.sort_values('出生日期')print(数据1.turncate(before='1949').head())
# turncate 为对数据的截取print(数据1.turncate(after='1949-12').head())
# 筛选出日期 1949-12 后的数值 (前提先将日期列排序)print(数据1.turncate(before='1949-02').head())
# 筛选出日期 1949-02 前的数值 (前提先将日期列排序)print(数据1.turncate(before='1949-02-20').head())
# 筛选出日期 1949-02-20 前的数值 (前提先将日期列排序)print(数据1['1949-10-1':'1949-12-31'])
# 筛选出日期 1949-10-1 至 1949-12-31 之间的数值

二、透视表 Pivot_table:

路径='C:/pandas/透视.xlxs'
数据=pd.read_excel(r'路径')数据1=pd.pivot_table(数据,index=['部门','销售人员'],values=['数量','金额'])
# 1.pivot_table 为透视表函数  2.将非数字列部门&销售人员设为索引   3.value只显示数量&金额列(否则将会显示所有列)数据1=pd.pivot_table(数据,index=['部门','销售人员'],values=['数量','金额'],columns='所属区域',aggfunc=[sum(),sum()])
# 1.显示所有区域各区域数量&金额   2.aggfunc为设置数量&金额对应的计算方式数据1=pd.crosstab([数据.月份.dt.month,数据.所属区域],数据.部门,margins=True)
# 1.crosstab为交叉表,计数时使用   2.根据月份&所属区域,统计各部门数据   3.margins=True,添加行/列的小计和总和

三、分组或合并 Groupby:

路径='C:/pandas/分组.xlxs'
数据=pd.read_excel(r'路径')数据1=数据.groupby(['城市','区县'])[['人数','金额']].sum()
# 按城市和区县组合合并,并对人数和金额求和字典={'1月份':'sum','2月份':'count','3月份':'max','4月份':'mean'}
# 对1月份列的求和统计,对2月份列的计数统计,对3月份列的最大值统计,对4月份列的平均值统计数据1=数据.groupby('店名').agg(字典)
# groupby 是基于行的合并,agg 是基于列的合并数据1=数据.groupby(level='班级').mean()
# 对各班级这行求平均

四、数据排序 Sort_values:

数据.sort_values(by='化学',ascending=False,inplace=False)
# ascending:False为降序,True为升序
# inplace:False为在数据源上排序,True为将排序后的数据新建一个数据表,保留数据源数据.sort_values(by=['化学','数学','语文'],ascending=[False,True,False],inplace=False)
# 依次对化学、数学、语文的值进行降序、升序、降序的排列数据.sort_index(inplace=True,ascending=False)
# 对索引降序排序数据.sort_values(by=1,inplace=True,ascending=False,axis=1)
# 对索引第一行排序数据.sort_values(by=[1,2],inplace=False,ascending=[False,True],axis=1)
# 对索引第一行和第二行排序

五、Apply/Map/Apply map 的运用

路径='C:/pandas/数据源.xlxs'
数据=pd.read_excel(r'路径')
字典={'男':'先生','女':'女士'}
# 建立字典数据['称呼']=数据['性别'].map(字典)
# 将数据的性别列中,男改为先生,女改为女士。并存入新建的称呼列中数据['性别']=数据['性别'].map(字典)
# 直接在数据的性别列中,将男改为先生,女改为女士数据1=数据[['语文','数学','英语']].apply(sum,axis=0)
# 对语文、数学、英语三列的数据分别求和。axis=0表示列,axis=1表示行def BMI(数据):身高=数据['身高']体重=数据['体重']BMI=体重/身高**2return BMI
数据['BMI']=数据.apply(BMI,axis=1)
#  BMI列应用公式:(体重/身高)的平方数据1=数据.applymap(lambda x:"%.3f" % x)
#  将数据保留三位小数

六、Merge/Insert 的运用 (等同于Excel中VLOOKUP查询匹配功能)

路径='C:/pandas/数据源.xlxs'
数据1=pd.read_excel(r'路径',sheet_name='学生名单')
数据2=pd.read_excel(r'路径',sheet_name='成绩单')结果=pd.merge(数据1,数据2.loc[:,['学号','总分']],how='left',on='学号')
# 1.以数据1为基准,将数据2匹配过来   2.[:,['学号','总分']]表示数据1行全选,数据2只选学号和总分  3.on='学号'表示以学号为匹配值最终分=结果.总分
# 将结果中的总分列赋值给最终分结果=结果.drop('总分',axis=1)
#  删除结果中的总分列结果.insert(0,'成绩',最终分)
#  在第0列插入最终分,并名命为成绩

Python-Pandas-Excel/CSV 数据处理大全整理 (一)相关推荐

  1. python pandas读取csv文件指定行_python pandas获取csv指定行 列的操作方法

    python pandas获取csv指定行 列的操作方法 pandas获取csv指定行,列 house_info = pd.read_csv('house_info.csv') 1:取行的操作: ho ...

  2. Python读取excel/csv表格并通过折线图可视化显示

    Python读取excel/csv表格并通过折线图可视化显示 写作背景 参数 使用figure()函数重新申请一个figure对象 注意,每次调用figure的时候都会重新申请一个figure对象 第 ...

  3. python pandas 读写 csv 文件

    python pandas 读写 csv 文件 具体看官方文档 https://www.pypandas.cn/docs/user_guide/io.html#csv-文本文件 import pand ...

  4. pandas Excel 光谱数据处理

    pandas Excel 光谱数据处理 在化学专业的学习中常常会使用到光谱分析,但是这种资料难以寻找,通常要进行手动绘制.通过查找数据库的源码,可以获取此数据,本文是使用pandas对此数据进行处理, ...

  5. python pandas excel数据处理_Python处理Excel数据-pandas篇

    Python处理Excel数据-pandas篇 非常适用于大量数据的拼接.清洗.筛选及分析 在计算机编程中,pandas是Python编程语言的用于数据操纵和分析的软件库.特别是,它提供操纵数值表格和 ...

  6. python pandas excel 排序_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  7. Python拆分excel及数据处理相关tips

    拆分excel及数据处理 将excel根据某一列的内容进行拆分,并输出所有拆分后的excel文件. <示例中以'标的名称'这一列的内容作拆分> 对分组所依照的列进行处理 .unique() ...

  8. 【python pandas excel操作】

    目录 1.打开Excel,获取不同sheet的名称 2.获取不同sheet的内容 3. 获取行数以及表头 4.对某一列的信息进行筛选 5.根据列号和索引号提取一行或者一列的数据 6.其他panda对E ...

  9. 用python对excel进行数据处理与分析操作

    本文代码及数据集来自<超简单:用Python让Excel飞起来(实战150例)> # 排序一个工作表中的数据(方法一) import pandas as pd data = pd.read ...

最新文章

  1. 如何从ActiveMQ平滑迁移到Kafka?
  2. 十三、熵编码算法(3):CAVLC原理
  3. Ajax与WebGIS
  4. linux下安装微信wechat
  5. Hibernate面试题分析
  6. python 邮件中生成图表_60秒一口Python:147个demo,助你从新手小白步步进阶编程高手...
  7. u-boot2010.06移植阶段三--norflash驱动
  8. Redis 3.2.4配置文件翻译
  9. 摄影名词解释 (ISO、快门、光圈、曝光、测光与测光模式、曝光补偿、焦距、光学变焦与数码变焦、景深与光圈优先、白平衡与RAW)
  10. 【仿人机器人】机器人的数学建模基础
  11. 锐捷云教室 服务器型号,锐捷智慧云课堂方案(云教室+简单)优秀课件
  12. 【无标题】开发一个app到底要多少钱?有多贵?
  13. 国产首发:上海川土微电子数字接口电源数字隔离芯片模拟芯片领导者
  14. Unity优化篇——mesh合并
  15. 【解决】source ~/.vimrc出错bash: /etc/vim/vimrc: line 21: syntax error near unexpected token `syntax'
  16. elasticsearch学习(六):IK分词器
  17. 01-MySQL 创建数据库
  18. 推卸责任的 Chain of Responsibility模式
  19. stc15w系列单片机——TCRT5000(寻迹传感器)与光敏传感器(附代码)
  20. 微信小程序开发video播放问题

热门文章

  1. 程序员周六给心爱的“她”放电的动人故事
  2. 企微小裂变与企鲸客scrm的功能差异化
  3. 电脑重装系统问题之进入BIOS界面
  4. 6-wireshark网络安全分析——网络取证一
  5. yocto 菜谱bb的选择
  6. 苹果a13_苹果或推出1500元以内低价iPhone,A13加持
  7. 在电脑壁纸上HTML时钟壁纸,在电脑的桌面上怎么添加可爱的小钟表?
  8. 免费内网穿透工具--路由侠
  9. 获取头信息header中参数access_token失败,获取header头信息中带下划线参数失败
  10. HTML:一种标记语言而不是编程语言(2.0)