今日内容概要

目标:将Pandas尽量结束

  • 如何读取外部excel文件数据到DataFrame中
  • 针对DataFrame的常用数据操作
  • 索引与切片
  • 操作DataFrame的字段名称
  • 时间对象序列操作
  • 数据分组与聚合
  • 练习题

今日内容详细

如何读取外部excel文件数据到DataFrame中

df = pd.read_csv('douban_movie.csv')  # 由于当前文件跟excel文件在同一个目录下所以可以直接写文件名
# 如果不在同一个路径下 那么需要输入excel文件的绝对路径
# '''
# 绝对路径
# 类似于全球具体坐标,任何人拿到该坐标都可以查找
# 相对路径
# 相对于一个参照物,并不是所有人都可以根据该坐标找到
# '''
df # 在读取文件的时候还可以自定义列
df1 = pd.read_csv('douban_movie.csv',index_col='产地')
# df1.set_index('类型')
df1
# 都是用来指定读取出来的excel数据的左侧行名称(行名称必须是表格中存在的) # 将之前设置的行索引取消
df1.reset_index()

基本操作

# 指定看前面多少条
df.head(5)
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142.0 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116.0 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116.0 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142.0 1994 9.4 洛杉矶首映
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171.0 1993 9.4 香港 # 查看尾部指定条数的数据
df.tail(5) # 查看数据条数
len(df)
38735 # 查看数据的行列个数
df.shape
(38735, 9) # 查看行索引
df.index
RangeIndex(start=0, stop=38735, step=1) # 查看列字段
df.columns
Index(['名字', '投票人数', '类型', '产地', '上映时间', '时长', '年代', '评分', '首映地点'], dtype='object')

数据导出

# 将DataFrame导出excel文件
df.to_csv('db1.csv') # 默认index=True 自动将DataFrame的行索引也导出 df.to_csv('db2.csv',index=False) # 忽略行索引

索引与切片

DataFrame也是由行索引和列索引,也可以通过标签和位置两种方法进行
方式1
两个中括号,先取列再取行 df['A'][0]
方式2
使用loc/iloc属性:一个中括号逗号隔开,先取行再取列
都是左侧 df.loc[0:5]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142.0 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116.0 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116.0 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142.0 1994 9.4 洛杉矶首映
4 霸王别姬 66666666.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171.0 1993 9.4 香港
5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194.0 2012 9.4 中国大陆
df.iloc[0:5]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142.0 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116.0 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116.0 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142.0 1994 9.4 洛杉矶首映
4 霸王别姬 66666666.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171.0 1993 9.4 香港

数据操作

df['名字']  # 展示形式是Series

df[['名字']]  # 用中括号扩一下就会变成表格的形式展示

# 一次性获取多个列
df[['名字','评分','类型']] # 切片获取数据条数
df[0:10] # 获取指定数据
df.at[4,'名字'] # at['行索引值','列名称']
# 修改指定数据
df.at[4,'名字'] = '爱情动作科幻大混合'
# 利用关键字指定索引
df.loc[1].at['名字'] # 切片之后获取指定的列数据
df[1:5][['名字','类型','年代']] # 数据快速筛选
df[(df.评分 > 8.5) & (df.评分 < 9.0)]

数据自定义展示

>>> df = pd.DataFrame({
... 'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
... 'col2': [2, 1, 9, 8, 7, 4],
... 'col3': [0, 1, 9, 4, 2, 3],
... })
>>> df
col1 col2 col3
0 A 2 0
1 A 1 1
2 B 9 9
3 NaN 8 4
4 D 7 2
5 C 4 3 Sort by col1
>>> df.sort_values(by=['col1'])
col1 col2 col3
0 A 2 0
1 A 1 1
2 B 9 9
5 C 4 3
4 D 7 2
3 NaN 8 4 Sort by multiple columns >>> df.sort_values(by=['col1', 'col2'])
col1 col2 col3
1 A 1 1
0 A 2 0
2 B 9 9
5 C 4 3
4 D 7 2
3 NaN 8 4
Sort Descending >>> df.sort_values(by='col1', ascending=False)
col1 col2 col3
4 D 7 2
5 C 4 3
2 B 9 9
0 A 2 0
1 A 1 1
3 NaN 8 4
Putting NAs first >>> df.sort_values(by='col1', ascending=False, na_position='first')
col1 col2 col3
3 NaN 8 4
4 D 7 2
5 C 4 3
2 B 9 9
0 A 2 0
1 A 1 1 # 后面还可以对排序之后的结果筛选
df.sort_values(['列名1','列名2'],ascending=True)[['目标列1','目标列2']]

操作列

df.rename(column={'旧列名称':'新列名称'},inplace=True)
# 能修改 但是会报个错误 可以添加下列配置
pd.set_option('mode.chained_assignment',None) # 创建新的列
df['新列名称']=df.列名称/(df.列名称1+df.列名称2) # 自定义位置
df.insert(3,'新列名称',新数据)

操作行

# 方式1 append
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
>>> df
A B
0 1 2
1 3 4
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB')) >>> df.append(df2)
A B
0 1 2
1 3 4
0 5 6
1 7 8
With `ignore_index` set to True: >>> df.append(df2, ignore_index=True)
A B
0 1 2
1 3 4
2 5 6
3 7 8 # 方式2 concat功能更强大 可以拼接Series和DataFrame
pd.concat([res,df])
pd.concat([res,df],ignore_index=True)
'''
本质其实就相当于拼接表格数据
'''

pandas模块篇(之三)的更多相关文章

  1. pandas模块篇(终章)及初识mataplotlib

    今日内容概要 时间序列 针对表格数据的分组与聚合操作 其他函数补充(apply) 练习题(为了加深对DataFrame操作的印象) mataplotlib画图模块 今日内容详细 时间序列处理 时间序列 ...

  2. pandas模块篇(之二)

    今日内容概要 布尔选择器 索引 数据对齐 数据操作(增出改查) 算术方法 DataFrame(Excel表格数据) 布尔选择器 import numpy as np import pandas as ...

  3. 关于Python pandas模块输出每行中间省略号问题

    关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...

  4. Pandas模块

    前言: 最近公司有数据分析的任务,如果使用Python做数据分析,那么对Pandas模块的学习是必不可少的: 本篇文章基于Pandas 0.20.0版本 话不多说社会你根哥!开干! pip insta ...

  5. 开发技术--pandas模块

    开发|pandas模块 整了一篇关于pandas模块的使用文章,方便检查自己的学习质量.自从使用了pandas之后,真的是被它的功能所震撼~~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识: ...

  6. [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载文件

    <Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...

  7. python之pandas模块

    一.pandas模块是基于Numpy模块的,pandas的主要数据结构是Series和DadaFrame,下面引入这样的约定: from pandas import Series,DataFrame ...

  8. Python 数据处理扩展包: numpy 和 pandas 模块介绍

    一.numpy模块 NumPy(Numeric Python)模块是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list str ...

  9. pandas模块实现小爬虫功能-转载

    pandas模块实现小爬虫功能 安装 pip3 install pandas 爬虫代码 import pandas as pd df = pd.read_html("http://www.a ...

随机推荐

  1. Spring系列9:基于注解的Spring容器配置

    写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...

  2. vue组件中使用<transition></transition>标签过渡动画

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. [USACO18DEC]The Cow Gathering P

    首先可以思考一下每次能删去的点有什么性质. 不难发现,每次能删去的点都是入度恰好为 \(1\) 的那些点(包括 \(a_i \rightarrow b_i\) 的有向边). 换句话说,每次能删去的点既 ...

  4. 对axios的理解

    axios是基于promise的,可以使用promise api axios的请求方式 axios(config) axios.request(config) axios.get(url [,conf ...

  5. C语言中的typedef跟define的区别

    今天用C语言练习时涉及到了typedef和define的使用问题,那么他们的区别是啥?这种情况下为什么要用typedef?哪种情况下为什么要用define呢? 学习C的时候的你是否考虑过这个问题呢? ...

  6. MySQL--数据表操作--行转列和列转行

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11782549.html MySQL--数据表操作: 会用到的查询操作. 1. Limit的用法 ...

  7. Haproxy LVS Nginx的优缺点总结

    Haproxy  LVS  Nginx的优缺点总结 1.haproxy优点 2.Nginx优点 3.Nginx缺点 4.LVS优点 5.LVS缺点 haproxy优点: haproxy也是支持虚拟主机 ...

  8. JS 获取JSON返回的时间值转换为通常格式展示

    var date = new Date(parseInt(数据源.slice(6)));   //获取到时间  年月日时分秒 var result = date.getFullYear() + '/' ...

  9. MySQL时间格式TIMESTAMP和DATETIME的区别

    时区,timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化 自动更新,insert.update数据时,可以设置timestamp列自动以当前时间(CURRENT_T ...

  10. Python解释器安装、多版本共存以及手动添加环境变量教程

    Python解释器安装.多版本共存以及手动添加环境变量教程 一.Python解释器下载 1. 先进入官网(python.org) 下图为网站的主页,依次按顺序点击"①Download&quo ...