一、csv文件

csv以纯文本形式存储表格数据

pd.read_csv('文件名'),可添加参数engine='python',encoding='gbk'

一般来说,windows系统的默认编码为gbk,可在cmd窗口通过chcp查看活动页代码,936即代表gb2312。

例如我的电脑默认编码时gb2312,pycharm默认是utf-8编码,csv内存在中文时会出现错误,可通过指定engine或编码格式解决。

二、excel文件

之前博客写过通过xlrd和xlwt读写xls文件、通过openpyxl读写xlsx文件,而pandas即可处理xls文件、也可处理xlsx文件。

pandas读取的excel结果为一个DataFrame对象,因此DataFrame的许多方法都会被用到,学习DataFrame   https://www.cnblogs.com/Forever77/p/11209186.html

pd.read_excel('文件名'),默认读取文件的第一个sheet页,并将第一行当作column,添加一行从0开始的整数作为index。

常用参数sheet_name='':表示读取文件的哪个sheet页,可以为sheet页名称,也可以使用数字,0表示第一个sheet页;None会读取所有有内容的sheet页。结果为一个字典,字典的key为sheet页名称,value为sheet页内容;默认读取第一个sheet页

index_col:将哪一列当作index列,默认添加一列从0开始的整数作为index,通过指定index_col='列名'指定索引列

header:将哪一行当作表头,即DataFrame的columns,默认将sheet页的第一行当作表头,header=1则将第二行当做表头

假设有一个excel表格内容如下图1,使用pandas读取结果分别如下。

import pandas as pd
df = pd.read_excel('fruit.xlsx')
print(df)
print(df.values)
print(df['名称'])
print(df.loc[1])
print(df.loc[2,'单价/元'])

             

①df = pd.read_excel('fruit.xlsx'),表示通过pandas读取excel并加载为DataFrame,从图2可以看出如果读取时不设置索引,pandas会自动生成一列,该列值从0开始,表示行索引。

②图2中红框中的部分即为DataFrame的值,可通过df.values获取,结果如图3,类似列表的形式,数据类型为<class 'numpy.ndarray'>;

③图2数据部分有三列,列的名字为第一行的内容,即列索引,可通过df[列名]获取某一列的内容,结果如图4所示;

④pandas自动生成的行索引从0开始,可通过pd.loc[n]获取索引值为n的行的内容,结果如图5所示;

⑤通过pd.loc[行索引,列索引]可获取具体单元格的内容,结果如图6所示。

可通过df.set_index(列名)自行设定索引,如下示例

import pandas as pd
df = pd.read_excel('fruit.xlsx') #也可在读取时直接设置index_col='名称'
df = df.set_index('名称') #设置名称列为行索引
print(df)
print(df.values)
print(df['库存/kg'])
print(df.loc['草莓'])
print(df.loc['香蕉','单价/元'])

        

将DataFrame格式的数据写入excel

第一步:writer = pd.ExcelWriter('文件路径和名称'),文件名称必须指定,默认保存在当前文件的相同目录,文件名称需包含后缀名且只能为xls或xlsx

第二步:df.to_excel(writer,'sheet页名称'),sheet页参数可不指定,默认为Sheet1

第三步:writer.save()

最新文章

  1. Critical: Update Your Windows Secure Channel (cve-2014-6321,MS14-066)
  2. 最好用的JQuery插件集合以及组合拳
  3. hbase集群的启动,注意几个问题
  4. Spring中javaMail通过SMTP发送邮件
  5. android如何实现文件按时间先后顺序排列显示
  6. VerbalExpressions ——另类正则表达式
  7. LXNetwork – 基于AF3.0封装的iOS网络请求库
  8. poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
  9. 深入浅出多线程——ReentrantLock (一)
  10. javaRMI详解
  11. Skyline Te Pro二次开发技能总结
  12. SpringBoot Mybatis 使用LocalDateTime
  13. C#俄罗斯方块小游戏程序设计与简单实现
  14. 深入理解java虚拟机一之走进Java
  15. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
  16. 矩阵的SVD分解
  17. applyColorMap()研究(如果我对现有的colormap不满意,那么如何具体来做)
  18. jsonp跨域设置cookie
  19. 峰Redis学习(7)Redis 之Keys 通用操作
  20. css溢出滚动条及去除滚动条的方法

热门文章

  1. IDEA开发工具使用 git 创建项目、拉取分支、合并分支
  2. Tensorflow与Keras自适应使用显存
  3. java List的初始化
  4. 一个JSON解构赋值给另一个字段不同的JSON
  5. 每日一题 - 剑指 Offer 49. 丑数
  6. 【API进阶之路6】一个技术盲点,差点让整个项目翻车
  7. Java 添加条码、二维码到Word文档
  8. DRS是啥你都不知道?不是吧,不是吧
  9. 数据可视化之powerBI技巧(十一)基于SQL思维的PowerBI DAX实战
  10. 数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你