浅析Python数据处理


Posted in Python onMay 02, 2018

Numpy、Pandas是Python数据处理中经常用到的两个框架,都是采用C语言编写,所以运算速度快。Matplotlib是Python的的画图工具,可以把之前处理后的数据通过图像绘制出来。之前只是看过语法,没有系统学习总结过,本博文总结了这三个框架的API。

以下是这三个框架的的简单介绍和区别:

  • Numpy:经常用于数据生成和一些运算
  • Pandas:基于Numpy构建的,是Numpy的升级版本
  • Matplotlib:Python中强大的绘图工具

Numpy

Numpy快速入门教程可参考:Numpy tutorial

Numpy属性

ndarray.ndim:维度

ndarray.shape:行数和列数,例如(3, 5)

ndarray.size:元素的个数

ndarray.dtype:元素类型

Numpy创建

array(object, dtype=None):使用Python的list或者tuple创建数据

zeors(shape, dtype=float):创建全为0的数据

ones(shape, dtype=None):创建全为1的数据

empty(shape, dtype=float):创建没有初始化的数据

arange([start, ]stop, [step, ]dtype=None):创建固定间隔的数据段

linspace(start, stop, num=50, dtype=None):在给定的范围,均匀的创建数据

Numpy运算

加、减:a + b、a - b

乘:b*2、10*np.sin(a)

次方:b**2

判断:a<35,输出True或False的数组

矩阵乘:np.dot(A,B) 或 A.dot(B)

其他:+=、-+、sin、cos、exp

Numpy索引

数组索引方式:A[1, 1]

切片:A[1, 1:3]

迭代:for item in A.flat

Numpy其他

reshape(a, newshape):改变数据形状,不会对原始数据进行修改,返回一组新数据

resize(a, new_shape):改变数据形状,会对原始数据进行修改,不返回数据

ravel(a):将成一维返回

vstack(tup):上下合并

hstack(tup):左右合并

hsplit(ary, indices_or_sections):水平分割n份

vsplit(ary, indices_or_sections):垂直分割n份

copy(a):深度拷贝

Pandas

Pandas快速入门教程可参考:10 Minutes to pandas

Pandas数据结构

Pandas的数据结构有两种:Series和DataFrame。

Series:索引在左边,值在右边。创建方式如下:

In [4]: s = pd.Series([1,3,5,np.nan,6,8])
In [5]: s
Out[5]: 
0  1.0
1  3.0
2  5.0
3  NaN
4  6.0
5  8.0
dtype: float64

DataFrame:是一个表格型的数据结构,既有行索引也有列索引, 它可以被看做由Series组成的大字典。创建方式如下:

In [6]: dates = pd.date_range('20130101', periods=6)

In [7]: dates
Out[7]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
        '2013-01-05', '2013-01-06'],
       dtype='datetime64[ns]', freq='D')

In [8]: df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

Pandas查看数据

index:索引

columns:列索引

values:值

head(n=5):返回前n项数据

tail(n=5):返回后n项数据

describe():打印出数据的数量、平均值等各项数据

sort_index(axis=1, ascending=False):根据索引排序

sort_values(by='B'):根据索引值排序

Pandas选择数据

数组选择方式:df[‘A']

切片选择方式:df[0:3] 或 df[‘20130102':'20130104']

根据标签选择:df.loc[‘20130102':'20130104',[‘A','B']]

根据位置选择:df.iloc[3:5,0:2]

混合选择:df.ix[:3,[‘A','C']]

条件判断选择:df[df.A > 0]

Pandas处理丢失数据

删除丢失数据的行:df.dropna(how='any')

填充丢失数据:df.fillna(value=5)

数据值是否为NaN:pd.isna(df1)

Pandas合并数据

pd.concat([df1, df2, df3], axis=0):合并df

pd.merge(left, right, on='key'):根据key字段合并

df.append(s, ignore_index=True):添加数据

Pandas导入导出

df.to_csv(‘foo.csv'):保存到csv文件

pd.read_csv(‘foo.csv'):从csv文件读取

df.to_excel(‘foo.xlsx', sheet_name='Sheet1'):保存到excel文件

pd.read_excel(‘foo.xlsx', ‘Sheet1', index_col=None, na_values=[‘NA']):从excel文件读取

Matplotlib

这里只介绍最简单的出图方式:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 随机生成1000个数据
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
# 为了方便观看效果, 我们累加这个数据
data.cumsum()
# pandas 数据可以直接观看其可视化形式
data.plot()
plt.show()

 

Python 相关文章推荐
Python深入学习之特殊方法与多范式
Aug 31 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
python字符串连接方法分析
Apr 12 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
浅谈flask中的before_request与after_request
Jan 20 Python
详解python中的模块及包导入
Aug 30 Python
Django实现文件上传下载功能
Oct 06 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
python的变量和简单数字类型详解
Sep 15 Python
python pycurl验证basic和digest认证的方法
May 02 #Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 #Python
用TensorFlow实现戴明回归算法的示例
May 02 #Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 #Python
Python实现确认字符串是否包含指定字符串的实例
May 02 #Python
详解用TensorFlow实现逻辑回归算法
May 02 #Python
Python获取指定字符前面的所有字符方法
May 02 #Python
You might like
php中字符串和整数比较的操作方法
2019/06/06 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
为python设置socket代理的方法
2015/01/14 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
python判断元素是否存在的实例方法
2020/09/24 Python
python把一个字符串切开的实例方法
2020/09/27 Python
python3中确保枚举值代码分析
2020/12/02 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
海南地接欢迎词
2014/01/14 职场文书
七年级英语教学反思
2014/01/15 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
倡议书作文
2015/01/19 职场文书
公司开除员工通知
2015/04/22 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Django drf请求模块源码解析
2021/06/08 Python