Pandas学习day-01

导入Pandas

import pandas as pd
import numpy as np

Pandas基本数据结构

pandas中有两种基本结构

Series

一维数组,与numpy中得array类似,与python中的基本数据结构List也相近。Series能保存不同的数据类型。

DataFrame

二维的表格型数据结构。

Pandas的Series类型

一维Series可以用一维列表初始化

s=pd.Series([1,3,5,np.nan,6,8])
s
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
s=pd.Series([1,3,5,np.nan,6,8],index=['a','b','c','d','e','f'])
s
a    1.0
b    3.0
c    5.0
d    NaN
e    6.0
f    8.0
dtype: float64

索引数据的行标签

s.index
Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')

s.values
array([ 1.,  3.,  5., nan,  6.,  8.])
s[0]
1.0
s[3]
nan

切片操作

s[2:5]
c    5.0
d    NaN
e    6.0
dtype: float64
s[::2]
a    1.0
c    5.0
e    6.0
dtype: float64

索引赋值

s.index.name='索引'
s
索引
a    1.0
b    3.0
c    5.0
d    NaN
e    6.0
f    8.0
dtype: float64

pandas的DataFrame类型

构造一个时间序列

date=pd.date_range('20180101',periods=6)
date
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04','2018-01-05', '2018-01-06'],dtype='datetime64[ns]', freq='D')

传入二维数组

df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
df
A B C D
2018-01-01 0.276367 0.235869 -0.863373 0.785798
2018-01-02 -0.585890 0.142942 -0.504779 -1.370040
2018-01-03 -0.607308 -0.983548 0.310815 0.338497
2018-01-04 0.025879 -0.442640 -0.862432 1.204614
2018-01-05 -0.278121 0.272711 0.491046 -0.114447
2018-01-06 -0.042118 -0.761489 -2.086405 -0.566671

使用字典传入数据

df2=pd.DataFrame({'A':1,'B':pd.Timestamp('20180101'),'C':pd.Series(1,index=list(range(4)),dtype=float),'D':np.array([3]*4,dtype=int),'E':pd.Categorical(['test','train','test','train']),'F':'abc'})
df2
A B C D E F
0 1 2018-01-01 1.0 3 test abc
1 1 2018-01-01 1.0 3 train abc
2 1 2018-01-01 1.0 3 test abc
3 1 2018-01-01 1.0 3 train abc

查看数据

头尾数据

head和tail查看头尾几行数据,默认为5。

df.head()
A B C D
2018-01-01 0.276367 0.235869 -0.863373 0.785798
2018-01-02 -0.585890 0.142942 -0.504779 -1.370040
2018-01-03 -0.607308 -0.983548 0.310815 0.338497
2018-01-04 0.025879 -0.442640 -0.862432 1.204614
2018-01-05 -0.278121 0.272711 0.491046 -0.114447
df.tail(3)
A B C D
2018-01-04 0.025879 -0.442640 -0.862432 1.204614
2018-01-05 -0.278121 0.272711 0.491046 -0.114447
2018-01-06 -0.042118 -0.761489 -2.086405 -0.566671

下标,列标,数据

下标使用index

df.index
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04','2018-01-05', '2018-01-06'],dtype='datetime64[ns]', freq='D')

列标使用columns属性查看

df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')

数据值使用values查看

df.values
array([[ 0.27636662,  0.23586885, -0.86337336,  0.78579775],[-0.58588988,  0.14294223, -0.50477922, -1.37003977],[-0.60730841, -0.98354839,  0.31081542,  0.33849741],[ 0.02587881, -0.44264039, -0.86243218,  1.20461397],[-0.27812082,  0.27271064,  0.49104565, -0.11444685],[-0.04211835, -0.76148874, -2.0864052 , -0.56667069]])

Pandas读取数据及数据操作

df=pd.read_excel('豆瓣电影数据.xlsx')

行操作

df.iloc[0]
名字                   肖申克的救赎
投票人数                 692795
类型                    剧情/犯罪
产地                       美国
上映时间    1994-09-10 00:00:00
时长                      142
年代                     1994
评分                      9.6
首映地点                 多伦多电影节
Name: 0, dtype: object
df.iloc[0:5]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港

iloc与loc的区别(loc左闭右闭的区间)

df.loc[0:5]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆

添加一行

dic={'名字':'复仇者联盟3','投票人数':123456,'类型':'剧情/科幻','产地':'美国','上映时间':2018-5-4,'时长':142,'年代':2018,'评分':np.nan,'首映地点':'美国'}
s=pd.Series(dic)
s.name=38738
s
名字      复仇者联盟3
投票人数    123456
类型       剧情/科幻
产地          美国
上映时间      2009
时长         142
年代        2018
评分         NaN
首映地点        美国
Name: 38738, dtype: object
df=df.append(s)
df.tail(1)
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38738 NaN 复仇者联盟3 123456.0 剧情/科幻 美国 2009 142 2018 NaN 美国

删除一行

df = df.drop([38738])
df.tail(5)
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.6 美国
38734 1935年 57.0 喜剧/歌舞 美国 1935-03-15 00:00:00 98 1935 7.6 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.1 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.0 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.6 美国

列操作

df.columns
Index(['名字', '投票人数', '类型', '产地', '上映时间', '时长', '年代', '评分', '首映地点'], dtype='object')
df['名字'][:5]
0    肖申克的救赎
1      控方证人
2     美丽人生
3      阿甘正传
4      霸王别姬
Name: 名字, dtype: object

增加列

df['序号']=range(1,len(df)+1)
df.head()
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点 序号
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节 1
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国 2
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利 3
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映 4
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港 5

删除列

df = df.drop('序号',axis=1)
df[-5:]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.6 美国
38734 1935年 57.0 喜剧/歌舞 美国 1935-03-15 00:00:00 98 1935 7.6 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.1 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.0 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.6 美国

通过标签选择数据

df.loc[[index],[colunm]] 通过标签选择数据

df.loc[1,'名字']
'控方证人'
df.loc[[1,3,5,7,9],['名字','评分']]
名字 评分
1 控方证人 9.5
3 阿甘正传 9.4
5 泰坦尼克号 9.4
7 新世纪福音战士剧场版:Air/真心为你 新世紀エヴァンゲリオン劇場版 Ai 9.4
9 这个杀手不太冷 9.4

条件选择

选择产地为美国的电影

df[df['产地']=='美国'][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
5 5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
6 6 辛德勒的名单 306904.0 剧情/历史/战争 美国 1993-11-30 00:00:00 195 1993 9.4 华盛顿首映

选择产地为美国的电影,并且评分大于9分

df[(df['产地']=='美国')&(df['评分']>9)][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
5 5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
6 6 辛德勒的名单 306904.0 剧情/历史/战争 美国 1993-11-30 00:00:00 195 1993 9.4 华盛顿首映

选择产地为美国或者中国大陆的电影,并且评分大于9分

df[((df.产地=='美国')|(df.产地=='中国大陆'))&(df.评分>9)][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
5 5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆

缺失值及异常值处理方法

缺失值处理方法

方法 说明
dropna 删除缺失值
fillna 填充缺失值
isnull 返回布尔值对象,判断缺失值
notnull isnull的否定式

判断缺失值

df[df['评分'].isnull()][:10]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38738 NaN 复仇者联盟3 123456.0 剧情/科幻 美国 2009 142 2018 NaN 美国

填充缺失值

df['评分'].fillna(np.mean(df['评分']),inplace=True)
df[-5:]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38734 38734.0 1935年 57.0 喜剧/歌舞 美国 1935-03-15 00:00:00 98 1935 7.600000 美国
38735 38735.0 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.100000 美国
38736 38736.0 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.000000 美国
38737 38737.0 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.600000 美国
38738 NaN 复仇者联盟3 123456.0 剧情/科幻 美国 2009 142 2018 6.935704 美国

删除缺失值

df.dropna() 参数
how=‘all’ 删除全为空值的行或者列
inplace=True 覆盖之前的数据
axis=0 选择行或者列

处理异常值

df[df.投票人数<0]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
19777 19777.0 皇家大贼 皇家大 -80.0 剧情/犯罪 中国香港 1985-05-31 00:00:00 60 1985 6.3 美国
19786 19786.0 日本的垃圾去中国大陆 にっぽんの“ゴミ” 大陆へ渡る ~中国式リサイクル錬 -80.0 纪录片 日本 1905-06-26 00:00:00 60 2004 7.9 美国
19797 19797.0 女教徒 -118.0 剧情 法国 1966-05-06 00:00:00 135 1966 7.8 美国

数据保存

df.to_excel('moive_data.xlsx')

Pnadas学习day-01相关推荐

  1. JavaWeb黑马旅游网-学习笔记01【准备工作】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  2. JavaWeb-综合案例(用户信息)-学习笔记01【列表查询】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  3. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  4. Tomcat学习笔记01【Web相关概念、Tomcat基本操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Tomcat学习笔记01[Web相关概念.Tomcat基本操作][day01] Tomcat学习笔记02[Tomcat部署项目][day01] 目录 ...

  5. XML学习笔记01【xml_基础、xml_约束】

    Java后端 学习路线 笔记汇总表[黑马程序员] XML学习笔记01[xml_基础.xml_约束][day01] XML学习笔记02[xml_解析][day01] 目录 01 xml_基础 今日内容 ...

  6. Bootstrap学习笔记01【快速入门、栅格布局】

    Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...

  7. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  8. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  9. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  10. MySQL学习笔记01【数据库概念、MySQL安装与使用】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

最新文章

  1. NSStream线程阻塞处理
  2. 完整iOS APP发布App Store上架流程
  3. docker save 与 docker export 的区别
  4. 局域网内连接MySQL
  5. 【C语言笔记初级篇】第一章:C语言快速入门及注意事项
  6. 更改计算机语言win7,windows7专业版怎么更改语言_如何更改windows7专业版语言
  7. java nat 端口转发_NAT网络地址转换——静态NAT,端口映射(实操!!)
  8. 硬盘分区表和文件分配表格式
  9. 不属于python标准库的是_下列哪项不是Python标准库中处理到程序中参量的模块?...
  10. 谭浩强c语言入门prd,完整C语言谭浩强学习笔记.docx
  11. 官方授权正版 Avast AntiTrack Premium 反跟踪工具软件
  12. QListView自定义Item
  13. ASP发送邮件的代码
  14. FFmpeg采集树莓派USB摄像头(UVC摄像头)
  15. java根据身份证号判断用户性别
  16. 南丁格尔玫瑰图的Python
  17. educoder 2-2Python 计算思维训练——循环与列表(二)
  18. 自建CA给内部网站颁发SSL证书
  19. 【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)
  20. 解锁京东云底层技术密码:京东四大数智供应链技术亮相

热门文章

  1. Luogu P2129 小Z的情书
  2. 按图搜索淘宝、天猫、1688商品API。(拍立淘API)
  3. # android移动开发——第十三章——个人理财通案例(Eclipse版)
  4. 开源工具,又是免费的神器 ,有点意思
  5. vs2008编译live555源码
  6. Pr入门系列之十五:校色与调色
  7. 云主机和电脑主机服务器有什么区别?
  8. 论文阅读------Stochastic Gradient Descent with Differentially Private updates
  9. 用Python做一个简陋的文本编辑器
  10. 选好核心交换机六个关键指标有哪些?