目录

使用ipython演示

创建pandas对象

创建序列

创建一个日期序列

创建二维数组

查看数据

选择数据

添加列

使用ipython notebook演示

处理丢失数据

数据运算

数据合并

数据分组

数据整形

数据透视

时间序列

类别数据

画图

数据读写


使用ipython演示

import pandas as pd

import numpy as np

创建pandas对象

创建序列

Series在pandas里面是一个序列

s=pd.Series([1,3,5,np.NaN,8,4])      NaN :空值

创建一个日期序列

dates=pd.date_range('20160301',periods=6)  包括起始日期20160301,一共6个日期

创建二维数组

方法1:data=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))  创建一个6行4列的随机数组,索引的行是上面设置的dates,列是ABCD

得出数组:

方法2:

d={'A':1,'B':pd.Timestamp('20130301'),'C':range(4),'D':np.arange(4)}

df=pd.DataFrame(d)

查看数据

df.dtypes 访问所有列的数据类型

df.A 访问A列的值

data.head() 默认访问前五行数据,括号内输入数字可以决定访问前几行

data.tail() 访问后面几行

data.index 行标签

data.columns 列标签

data.values 访问值

data.describe() 看到数组的一些特征,比如平均值最大值最小值方差

data.T 转置

data.shape 行数列数

data.sort_index(axis=1) 按列标签排序,升序

data.sort_index(axis=1,ascending=False) 降序

data.sort_values(by='A') 按A列排序

选择数据

data.A 或者data['A']  选取A列

data[2:4]   选取2到4行

data['20160302':'20160305'] 按行标签选

data.loc['20160302':'20160305'] 相比较上面而言效率高,因为loc只识别行或者列标签 data.loc[2:4] 报错

data.iloc[2:4] 可以,只能识别内置标签,不识别行列

data.loc['20160302':'20160305',['B','C']] 选取某几行某几列

data.at[pd.Timestamp('20160302'),'B']  效率高,但是只能识别数据原类型如果data.at['20160302','B'] 报错

data.iloc[1:1]  精确访问某个元素 data.iat[1:1]效率更高

添加列

tag=['a']*2+['b']*2+['c']*2

data['TAG']=tag

data[data.TAG.isin(['a','c'])]      按TAG列的a和c值检索

data.iat[0,0]=100  更改某个位置的值

data.A=range(6)

data.B=200  如果这个列所有数值都是一样(标量)可以,会把所有值都改为200 如果这个列各行数值不一样,赋值的个数不匹配就会报错

data.iloc[:,2:5]=100 可以把这个选取的子表所有值都改为100,这个是可以的,也可以赋值为一个行列数相等的子表,来替换原有数据

使用ipython notebook演示

处理丢失数据

%matplotlib inline          图形直接在网页显示出来

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

df1=df.reindex(index=dates[0:4],columns=list(df.columns)+['E'])

df1=loc[dates[1:3],'E']=2   将2和3行第E列的两个值赋值为2,E列其他值为NaN

df1.dropna() 把含有空值的行删除

df1.fillna(value=5) 把空值补充为5

pd.isnull(df1)  得到一个布尔值表格,判断是否为空

pd.isnull(df1).any() 简化为每一列是否有空数据

pd.isnull(df1).any().any() 进一步简化为这个数组是否有空数据

数据运算

df1.mean() 默认按列求平均值,df1.mean(axis=1)按行求平均值

df1.cumsum() 默认按列累加,得到新的数组,空值不参与计算

df1.sub(s,axis='index')   假设设置一个新数组s,以行标签为依据,df1的每一个单元格减去s对应的单元格数据,如果两个数组行列数不等,就有空值补齐,如果某个单元格为空值则不参与计算,该单元格计算结果显示为空值

因为空值不参与计算,一般都是先删除或者补齐空值再进行计算

df.apply(np.cumsum) 按列来累加   apply是对列进行操作的

df.apply(lambda x : x.max()-x.min()) 每列最大值减去最小值

数据合并

df1=pd.concat([df.iloc[:3],df.iloc[3:7],df.iloc[7:]])   合并数组

df1==df 可以得到一个布尔值数组,比较两个数组每个位置是否一样

(df1==df).all() 每列是否一样

(df1==df).all().all() 整个表格是否一样

通过外键关联合并两个数组:

首先以字典的形式创建两个数组

left=pd.DataFrame({'key':['foo','foo'],'lval':[1,2]})

  key lval
0 foo 1
1 foo 2

right=pd.DataFrame({'key':['foo','foo'],'rval':[4,5]})

  key rval
0 foo 4
1 foo 5

pd.merge(left,right,on='key')

  key lval rval
0 foo 1 4
1 foo 1 5
2 foo 2 4
3 foo 2 5

另一种插入数组的方式:

df.append(s,ignore_index=True)

在df中添加s,不会改变原有的数组,只是生成一个copy

数据分组

df.groupby('A').sum() 按照A列的标签分类,并在每一行对应的列标签下进行分别求和

df.groupby(['A','B']).sum()  先按照A分组,再按照B分组,如果['B','A']结果是不一样的

数据整形

stacked=df.stack() 把列索引变成行索引,也是创建一个新数组

stacked.unstack() 恢复上一次的列索引

stacked.unstack().unstack()  把行索引转换为列索引,如果行索引有两层,先把第二层行索引转换为列索引

数据透视

只看一部分数据

df.pivot_table(value=['D'], index=['A','B'], columns=['C'])  选取AB两个列标签作为行索引,C列标签作为列索引,看D列的值

时间序列

rng=pd.date_range('20160301', periods=600, freq='s')

s=pd.Series(np.random.randint(0,500,len(rng)), index=rng)

s.resample('2Min', how='sum') 采样,每两分钟以求和的方式采样 sum可以改为mean,以平均值的方式采样

除了以date和秒s创建时间序列,也可以以季度为单位:

rng=pd.period_range('2000Q1','2016Q1', freq='Q')

rng.to_timestamp() 转换为日期的格式

pd.Timestamp('20160301')- pd.Timestamp('20160201') 可以进行日期计算

类别数据

df('grade')=df.raw_grade.astype('category')  创建新的一列“grade”,类型是category

df.grade.cat.categories=['very good', 'good', 'bad'] 可以对这一列的内容进行重命名,可以替换原有的内容

但是,如果以grade列进行排序,还是以原内容进行排序

画图

s.plot()

数据读写

df.to_csv('data.csv')  写入磁盘

%ls  查看位置

%more data.csv 看内容

pd.read_csv('data.csv') 读取磁盘中文件内容

pd.read_csv('data.csv', index_col=0) 如果不加index_col=0,会默认把之前的索引序列作为一列值,这里加了之后就把0列作为索引,这样读出来就跟之前写的数据一样

机器学习数据科学库2——pandas1相关推荐

  1. 机器学习-数据科学库-day6

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day6 pandas学习 动手练习 pandas中的时间序列 生成一段时间范围 关于频率的更多缩写 在Data ...

  2. 机器学习-数据科学库-day5

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day5 pandas学习 pandas之DataFrame pandas常用统计方法 将字符串离散化 数据合并 ...

  3. 机器学习-数据科学库-day1

    机器学习-数据科学库-day1 机器学习-数据科学库-day1 matplotlib 机器学习-数据科学库-day1 数据分析课程包括: 基础概念与环境 matplotlib numpy pandas ...

  4. 机器学习-数据科学库:matplotlib绘图

    机器学习-数据科学库:matplotlib绘图 matplotlib绘图 matplotlib折线图 matplotlib散点图 matplotlib条形图 matplotlib直方图 对比常用统计图 ...

  5. 机器学习-数据科学库:Pandas总结(1)

    机器学习-数据科学库:Pandas总结(1) Pandas pandas的常用数据类型 pandas之Series创建 pandas之Series切片和索引 pandas之读取外部数据 pandas之 ...

  6. HuaPu在学:机器学习——数据科学库【matplotlib】

    数据科学库[matplotlib] 文章目录 数据科学库[matplotlib] 前言 一.数据分析介绍及环境安装 1.为什么要数据分析??? 2.环境安装 二.matplotlib 1.为什么学习m ...

  7. 机器学习-数据科学库(第三天)

    14.numpy的数组的创建 什么是numpy 一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型.多维数组上执行数值运算(数组就是列表.列表 ...

  8. 机器学习-数据科学库(第六天)

    37.pandas时间序列01 现在我们有2015到2017年25万条911的紧急电话的数据,请统计出出这些数据中不同类型的紧急情况的次数,如果我们还想统计出不同月份不同类型紧急电话的次数的变化情况, ...

  9. 机器学习-数据科学库(第五天)

    31.数据的合并和分组聚合--字符串离散化的案例 字符串离散化的案例 刚刚我们学会了数据分合并,那么接下来,我们按照电影分类(genre)信息把数据呈现出来 import numpy as np im ...

最新文章

  1. nb-iot_如何使用语音通过Android控制IoT设备
  2. ZOJ1563 (动态规划)
  3. 语言 山东专升本 真题_专升本英语真题
  4. Spark SQL之queryExecution运行流程解析Logical Plan(三)
  5. 热浪(信息学奥赛一本通-T1379)
  6. CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
  7. idea插件安装在哪个目录_从零开始编写自己需要的IntelliJ IDEA 插件
  8. 高等数学复习笔记(三)- 中值定理
  9. 我看了全部文件的字符串资源
  10. C++ list 基础用法合集;list 增减元素 list删除某一个元素 遍历list
  11. knockout.js的学习笔记3
  12. 深信服 云桌面 linux,深信服桌面云-深信服桌面云下载 v3.0官方版--pc6下载站
  13. 移动硬盘计算机管理无法显示,移动硬盘不显示怎么办
  14. Shell脚本介绍(资源)
  15. 提高网络营销的转化只需掌握这四步
  16. C++知三角形三边求面积
  17. setAttribute的具体用法
  18. 你看到的都是招数,不是内功
  19. [转自mop]各大高校BBS上的100个爆笑的签名档
  20. HTML怎么把图片颜色加深,怎么把Photoshop的图片整体颜色加深?

热门文章

  1. matlab速度梯度,[转载]关于FLUENT中Y+的一些讨论
  2. ACIS内核和parasolid内核的来龙去脉与比较
  3. 解决wordpress上传文件大小限制
  4. BZOJ2073 PRZ(状压dp)
  5. 怎么使用远程管理卡登录服务器、远程连接数据库
  6. MYSQL安装步骤及配置
  7. 浪到飞起的前端女程序员的2019总结
  8. java生成文字二维码、url二维码
  9. 显示桌面的困惑,不响应“显示桌面”(ToggleDesktop)
  10. html 图片轮播实例,简单实现轮播图效果的实例