Pandas 数据分析基础

Pandas

安装

  • anaconda 安装:
  • conda list pandas 查看是否已经安装
  • conda install pandas
  • conda update pandas
  • pip 安装
  • pip install pandas
  • apt 安装
  • sudo apt-get install python-pandas

    测试是否安装成功

    nosetests pandases

不成功会进行提醒,可以重新安装或者更新

pandas数据结构

  • Series
  • DataFrame

Series

1 声明series 对象

s = pd.Series([12,3,9,1])
s
s = pd.Series([12,52,4,2],index=['a','b','c','d'])
s.values
s.index

2 用numpy数组或其他对象定义

arr=np.array([1,2,3])
s=pd.Series(arr)
# 注意这里的s对象中的元素是对arr的引用,如果改变arr的值,s的值也会改变

# 用作字典
dic={'red':123,'blue',122,'green':129}
s.Series(dic)

3 筛选元素

s[s>8] # 对values的比较
s/2
np.log(s)

4 其他函数

s.unique() # 只出现一次
s.value_counts() # 统计数量
# 做筛选
s.isin([0,3])
s[s.isin([0,3])]
# 空和不空
s.isnull()
s.notnull()

DataFrame

和excel类似

创建Frame

data={'title1':[1,2,3],'title2':[5,4,3]}
frame=pd.DataFrame(data)
frame=pd.DataFrame(data,columns=['title1'])

# index 会自动生成索引也可以通过index属性进行更改
pd.DataFrame(data,index=['one','two','three']) # 个数需要匹配

选取元素

frame.columns
frame.index
frame.values

frame['title1'] or frame.title1
# 行
frame.ix[2]
frame.ix[[0,1]]
frame[0:2]
frame['title1'][2]

赋值

frame.index.name='id'
frame.columns.name='cols'
frame['title1'][3]= 3
ser=pd.Series(np.arange(5))
frame['new']=ser

其他

# 所属关系
frame.isin([1.0,'a'])
# 删除一列
del frame['new']
# 筛选
frame[frame <= 2]
# 转置
frame.T

Index 对象

ser.idxmin()
ser.idxmax()
ser.index.is_unique()

# 执行更换索引
ser.reindex(['a','b','c'])

# 删除
ser.drop('0')

算数运算方法

frame1.add(frame2)
sub(), div(), mul()

DataFrame 与 Series的运算

frame=pd.DataFrame(np.arange(16).reshape(4,4),index=['red','blue','gren','yellow'],columns=['ball','pen','paper','socket'])

ser=pd.Series(np.arange(4),index=['ball','pen','paper','socket'])

frame - ser

Pandas 库函数

 按行或列执行

f=lambda x:x.max() - x.min()

def f(x):

? return x.max()-x.min()

frame.apply(f,axis=1) # 处理行

函数

sum()
mean()
describe() # 计算多个统计量
# 排序函数
sort_index([ascending=False][axis=1])

对数据结构中的元素排序

# series
ser.order()
# DataFrame
frame.sort_index(by='pen')
frame.sort_index(by=['pen','pencil'])
位次排序
  • ser.rank()
  • ser.rank(method=‘first‘)
  • ser.rank(ascending=False)
相关性和协方差

correlation and covariance 计算通常涉及到两个Series 对象

>>> seq2=pd.Series([3,4,3,4,5,4,3,2],['06','07','08','09','10','11','12','13'])
>>> seq1=pd.Series([1,2,3,4,4,3,2,1],['06','07','08','09','10','11','12','13'])
>>> seq1.corr(seq1)
1.0
>>> seq1.corr(seq2)
0.7745966692414835
>>> seq1.cov(seq2)
0.8571428571428571

DataFrame 可以实现其对象的相关性和协方差,返回DataFrame矩阵

>>> frame2=pd.DataFrame([[1,4,3,6],[4,5,6,1],[3,3,1,5],[4,1,6,4]],index=['r','g','b','w'],columns=['ball','pen','pencil','paper'])
>>> frame2.corr()
            ball       pen    pencil     paper
ball    1.000000 -0.276026  0.577350 -0.763763
pen    -0.276026  1.000000 -0.079682 -0.361403
pencil  0.577350 -0.079682  1.000000 -0.692935
paper  -0.763763 -0.361403 -0.692935  1.000000
>>> frame2.cov()
            ball       pen    pencil     paper
ball    2.000000 -0.666667  2.000000 -2.333333
pen    -0.666667  2.916667 -0.333333 -1.333333
pencil  2.000000 -0.333333  6.000000 -3.666667
paper  -2.333333 -1.333333 -3.666667  4.666667

除此之外还可以计算DataFrame对象与Series或者DataFrame对象之间的关系

frame.corrwith(ser)

frame.corrwith(frame2)

NaN

过滤NaN

# series obj
ser.dropna()
or
ser[ser.notnull()]

# DataFrame obj
frame.dropna() # 整行都被删除
frame.dropna(how='all') # 删除全部Nan的列

为NaN填充

frame.fillna(0)
frame.filena('ball':1,'mug':2)

等级索引&分级

>>> mser=pd.Series(np.random.rand(6),[['a','a','b','b','c','c'],[2,3,6,4,5,8]])
>>> mser
a  2    0.936455
   3    0.431867
b  6    0.996895
   4    0.584551
c  5    0.883911
   8    0.049483
dtype: float64
# 选取
mser['a'][2]=0.936455

DataFrame 与 Series转化

DataFrame -> Series : stack()

frame.stack()

Series -> DataFrame : unstack()

mser.unstack()

交换层级:

frame.colums.names=['a','b']
frame.index.name=['c','d']
frame.swaplevel('c','d')
frame.sortlevel('c')# 只按照一个层级进行排序

# 按层级统计数据
frame.sum(level='c')
frame.sum(level='c',axis=1)

Pandas 数据读写


  • read_csv()
  • read_excel()
  • read_sql()
  • read_json()
  • read_html()
  • read_clipboard()


  • to_csv()
  • to_excel()
  • to_sql()
  • to_json()
  • to_html()
  • to_clipboard()

CSV 文件

  1. read_csv()
  2. read_table()
  3. to_csv()
pd.csvframe=read_csv('data.csv')
pd.read_table('data.csv',sep=',')
# names 指定表头
read_csv('data.csv',names=['id'])
# header 添加表头

TxT RegExp 解析

在read_table中使用sep中的正则表达式

. 单个字符
\d 数字
\D 非数字
\s 空白字符
\S 非空白字符
\n 换行符
\t 制表符
>>> pd.read_table('tt.txt',sep='\s*')
   white  red  blue  green
0      1    5     2      3
1      2    7     8      5
2      3    3     6      7
>>> pd.read_table('tt.txt',sep='\D*',header=None)
 # skiprows=[1,3,6]排除1,3,6 行
 # skiprows=5 排除前五行

部分数据读取(常用用法)

从 skiprows 开始读,读多少 nrows行

read_csv(‘data.csv‘,skiprows=[2],nrows=3,header=None)

解析文本:

out=pd.Series()
i=0
# chunksize 一次处理数据行数
pieces = pd.read_csv('tips.csv',chunksize=3)
for piece in pieces:
    out.set_value(i,piece['size'].sum())
    i=i+1

往CSV中写数据

frame.to_csv('tt.csv',index=False,header=False)

替换,,中内容

frame.to_csv(‘new.csv‘,na_rep=‘NaN‘)

HTML

读取HTML

read_html()

to_html()

安装html5lib库

conda install html5lib

tf=pd.DataFrame(np.arange(4).reshape(2,2))

print(tf.to_html()) # 自动转化html

更加复杂的例子:(生成)

frame=pd.DataFrame(np.random.random((4,4)),index=['white','black','red','blue'],columns=['up','down','right','left'])

s=['<html>']
s.append('<head><title>DataFrame</title></head>')
s.append('<body>')
s.append(frame.to_html())
s.append('</body></html>')
html=''.join(s)

html_file=open('myFrame.html','w')
html_file.write(html)
html_file.close()

打开HTML文件:

>>> web_frame=pd.read_html('myFrame.html')
>>> web_frame
[  Unnamed: 0        up      down     right      left
0      white  0.654247  0.917280  0.599515  0.401334
1      black  0.647599  0.555069  0.612985  0.279210
2        red  0.204044  0.719828  0.950169  0.749252
3       blue  0.089194  0.498193  0.568361  0.427534]

局限于读表格

从XML读取数据

lxml 库文件

from lxml import objectify
xml=objectify.parse('test.xml')
root=xml.getroot()

读写excel文件

pd.read_excel('data.xlsx')
pd.read_excel('data.xlsx','sheet2')

原文地址:https://www.cnblogs.com/pprp/p/9123991.html

时间: 2024-10-29 21:25:37

Pandas 数据分析基础的相关文章

利用Python进行数据分析 基础系列随笔汇总

一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ,一共可以划分为三个大部分: 第一部分简单介绍数据分析,以一个小例子简单说明了什么是数据分析和 IPython 工具: 第二部分是 NumPy 的基础使用,NumPy 是 Python 包,提供科学计算功能,主要是 ndarray 数组对象: 第三部分是 pandas 的基础使用,主要是 Seri

Python数据分析基础与实践 Python数据分析实践课程 Python视频教程

课程简介: Python数据分析基础与实践 Python数据分析实践课程 Python视频教程----------------------课程目录------------------------------├<章节1Python概况>├<章节2Python安装>├<章节3数据准备>├<章节4数据处理>├<章节5数据可视化>├<章节6网页数据抓取>├<章节7连接MySQL>├<章节8数据分析> 下载地址:百度网盘

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

Python数据分析——基础02

Python数据分析--基础02 元组(tuple) 元组是一个固定长度,不可改变的序列对象. 创建元组 用逗号分隔一列值 tup = 1,2,3 # (1, 2, 3) 用圆括号 tup = (1,2,3), (4,5,6,7) # ((1, 2, 3), (4, 5, 6, 7)) 使用tuple()可以将任意序列或迭代器转换成元组 tuple([1,2,3,4]) # (1, 2, 3, 4) tuple('string') # ('s', 't', 'r', 'i', 'n', 'g')

Python数据分析 Pandas模块 基础数据结构与简介(一)

pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二维矩阵:DataFrame 三维面板数据:Panel 背景:为金融产品数据分析创建的,对时间序列支持非常好! 数据结构 导入pandas模块 import pandas as pd 读取csv文件,数据类型就是二维矩阵 DataFrame df = pd.read_csv('路径')type(df)

python 数据分析基础

安装Python基础的几个数据分析库: pip install pandas pip install numpy pip install scipy pip install scikit-surprise 值得注意的是,在安装scikit-surprise库的时候需要提前安装Microsoft Visual C++ 14.0 百度网盘链接在下面: 链接: https://pan.baidu.com/s/1grxdx_7TH40fiLfeV1McHg 提取码: md8b 原文地址:https://

Pandas 数据分析——超好用的 Groupby 详解

在日常的数据分析中,经常需要将数据根据某个(多个)字段划分为不同的群体(group)进行分析,如电商领域将全国的总销售额根据省份进行划分,分析各省销售额的变化情况,社交领域将用户根据画像(性别.年龄)进行细分,研究用户的使用情况和偏好等.在 Pandas 中,上述的数据处理操作主要运用 groupby 完成,这篇文章就介绍一下 groupby 的基本原理及对应的 agg.transform 和 apply 操作.PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致

动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题

D3.js入门指南 什么是D3?D3是指数据驱动文档(Data-Driven Documents),根据D3的官方定义: D3.js是一个JavaScript库,它可以通过数据来操作文档.D3可以通过使用HTML.SVG和CSS把数据鲜活形象地展现出来.D3严格遵循Web标准,因而可以让你的程序轻松兼容现代主流浏览器并避免对特定框架的依赖.同时,它提供了强大的可视化组件,可以让使用者以数据驱动的方式去操作DOM. D3是这样一个特殊的JavaScript库,它利用现有的Web标准,通过更简单的(