码迷,mamicode.com
首页 > 其他好文 > 详细

快速学懂pandas

时间:2018-03-19 10:21:47      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:pandas;快速学pandas;

本文是对pandas官方教程的一个整理,供参考


目录

1:创建对象

2:查看数据

3:获取数据

4:设置些值

5:缺少数据处理

6:统计描述

7:应用

8:合并数据

9:分组

----------------------------------------------从这里开始-------------------------------------------------------------------------------

习惯上,我们首先导入这二个关键模块

import pandas as pd
import numpy as np


1:创建对象

   Series结构是基于NumPy的ndarray结构,是一个一维的标签矩阵(感觉跟python里的字典结构有点像)

s = pd.Series([1, 3, 5, np.nan, 6, 8])
print s

技术分享图片

datas = pd.date_range('20130101',periods=6)
print datas
df = pd.DataFrame(np.random.randn(6,4),index=datas,columns=list('ABCD')) #DataFrame通过传递带有日期时间索引和标签列的numpy数组来创建一个数组:
print df

技术分享图片

DataFrame通过传递可以转换为序列对象的字典来创建。

df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20130102'),
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     'D' : np.array([3] * 4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     'F' : 'foo' })
print df2

技术分享图片



2:查看数据

查看数据的顶部和底部行

print(df.head()) #顶部,括号里面写数字几就是输出几行
print(df.tail(3))#底部行

技术分享图片


显示索引,列和底层numpy数据

print("--------显示索引-------------------")
print(df.index)
print("--------显示列-------------------")
print(df.columns)
print("--------显示值-------------------")
print(df.values)

技术分享图片


描述显示数据的快速统计摘要

print(df.describe())

技术分享图片


转置数据

print(df.T)     #行列转化

技术分享图片

print(df.sort_index(axis=1, ascending=False))
print("---------------------------------------")
print(df.sort_values(by='B')) #默认升序

技术分享图片



3:获取

选择一个单列,它产生一个Series,等同于df.A

print(df['A'])
print("---------------------------------------")
print(df[0:3])

    技术分享图片

print("---使用标签获取横截面------------------------------------")
print(df.loc[datas[0]])
print("---通过标签选择多轴------------------------------------")
print(df.loc[:,['A','B']])

技术分享图片

print("---显示标签切片,两个端点都在内------------------------------------")
print(df.loc [ '20130102':'20130104',[ 'A' ,'B' ]])
print("---获取标量值------------------------------------")
print(df.loc[datas[1],'A'])

技术分享图片




4:设置值

设置新列自动按索引对齐数据

s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6))
print s1

技术分享图片

print("---通过标签设置值------------------------------------")
df.at[datas[0],'A']=0
print("---按位置设置值------------------------------------")
df.iat[0,1] = 0
print("---通过分配一个numpy数组进行设置------------------------------------")
df.loc[:,'D'] = np.array([5] * len(df))
print(df)

技术分享图片



5:缺少数据处理

panads主要使用该值np.nan来表示缺失的数据。它默认不包含在计算中

df1 = df.reindex(index=datas[0:4], columns=list(df.columns) + ['E'])
df1.loc[datas[0]:datas[1],'E'] = 1
print df1

技术分享图片

print("---删除任何缺少数据的行。------------------------------------")
df1.fillna(value=1)
print(df1)

技术分享图片


6:统计描述

s = pd.Series([1,3,5,np.nan,6,8],index=datas).shift(2)
print s
print("--------------------------------")
print df.sub(s,axis='index')

技术分享图片


7:应用


print df.apply(np.cumsum)
print("--------------------------------------------------------")
print df.apply(lambda x:x.max() - x.min()) #对数据应用函数:

技术分享图片


8:合并数据

print("-合并------------------------------------------------------")
df = pd.DataFrame(np.random.randn(10,4))
pieces = [df[:3], df[3:7], df[7:]]
print pd.concat(pieces)

技术分享图片


9:分组

对于”group by”操作,我们通常是指以下一个或多个操作步骤:

l  (Splitting)按照一些规则将数据分为不同的组;

l  (Applying)对于每组数据分别执行一个函数;

l  (Combining)将结果组合到一个数据结构中;

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                         'two', 'two', 'one', 'three'],
                    'C' : np.random.randn(8),
                    'D' : np.random.randn(8)})
print df

技术分享图片


分组并对每个分组执行sum函数:

通过多个列进行分组形成一个层次索引,然后执行函数:

print df.groupby('A').sum()
print "--------------------"
print df.groupby(['A','B']).sum()

技术分享图片



快速学懂pandas

标签:pandas;快速学pandas;

原文地址:http://blog.51cto.com/meyangyang/2088348

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!