数据分析之pandas入门

概念

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

数据结构

Series

一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。Series如今能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series中。相当于excel表格中的一行或一列。

Time- Series

以时间为索引的Series。

DataFrame

二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。想当于整个excel表格

Panel 

三维的数组,可以理解为DataFrame的容器。

DataFrame

pandas.DataFramedata = Noneindex = Nonecolumns = Nonedtype = Nonecopy = False 

具有标记轴(行和列)的二维大小可变,可能异构的表格数据结构。算术运算在行标签和列标签上对齐。可以被认为是Series对象的类似dict的容器。主要的熊猫数据结构。

参数 含义
date

numpy ndarray(结构化或同类),dict或DataFrame

Dict可以包含Series,数组,常量或类似列表的对象

index

索引或类似数组

用于结果框架的索引。如果没有索引信息部分输入数据且没有提供索引,则默认为RangeIndex

columns 索引或类似数组
dtype

dtype,默认无

要强制的数据类型。只允许一个dtype。如果没有,推断

copy 从输入中复制数据。仅影响DataFrame / 2d ndarray输入

1.首先是引入 pandas 和 numpy,这是经常配合使用的两个包,pandas 依赖 于 numpy , 引 入 以 后 我 们 可 以 直 接 使 用 np/pd 来 表 示 这 个 两 个 模 块

import pandas as pd
import numpy as np

2.先创建一个时间索引,所谓的索引(index)就是每一行数据的 id,可以标识每一行的唯一值

import numpy as np
import pandas as pd
dates=pd.date_range('20140729',periods=6) #先创建一个时间索引
print(dates)

3.为了快速入门,我们看一下如何创建一个 6X4 的数据:randn 函数用于创建 随机数,参数表示行数和列数,dates 是上一步创建的索引列

df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print(df)
                   A         B         C         D
2014-07-29  0.903144 -0.181279 -1.137720  2.223796
2014-07-30 -0.114200 -0.632093 -0.452454  0.636597
2014-07-31  1.927723 -0.144461  0.314994  0.720999
2014-08-01  0.476361 -2.103184  0.405894  0.581166
2014-08-02 -1.456755 -0.932630 -1.250263  0.707323
2014-08-03 -0.442297  0.043270 -0.712352  0.771850

4.我们还可以使用字典来创建数据框,如下创建一个列名为A的数据框,索引是自动创建的整数

df2=pd.DataFrame({'A':np.random.randn(6),})
print(df2)

          A
0 -0.534755
1  0.057653
2  0.999872
3 -0.591066
4 -0.604836
5  1.942535

5.如果字典内的长度不同,以最长的数据为准,比如B列有4行,如下所示:

df3=pd.DataFrame({'A':pd.Timestamp('20140729'),'B':pd.Series(1,index=list(range(4))),})
print(df3)

6.使用dtypes来查看各行的数据格式

df3=pd.DataFrame({'A':pd.Timestamp('20140729'),'B':pd.Series(1,index=list(range(4))),})
print(df3)
print(df3.dtypes)
A    datetime64[ns]
B             int64
dtype: object

7.使用head查看前几行的数据,查看前3行数据

print(df3.head(3))
           A  B
0 2014-07-29  1
1 2014-07-29  1
2 2014-07-29  1

8.使用tail查看后5行数据
 

print(df3.tail(3))
           A  B
1 2014-07-29  1
2 2014-07-29  1
3 2014-07-29  1

9.查看数据框的索引

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

10.查看数据框的列名

print(df.columns)

11.查看数据值,用values

print(df.values)

12.查看描述性统计,用describe

print(df.describe())

13.使用T来转置数据,也可用来行列转换

print(df.T) 

14.对数据进行了排序,用sort,参数可以指定哪一列来排序

print(df.sort_values(by="C"))

15.对单列进行操作

print(df['A'])

16.切片操作

选取1-2行

print(df[1:3])

选取“20140729”和“20140730"两行

print(df[“20140729”;"20140730"])

17.DateFrame的loc方法是帮助选择数据的,比如选择索引位置为0的一行数据(我们使用dates为索引)

print(df.loc[dates[0]])

18.选择多行数据的写法

print(df.loc[:,['A','B']])

19.选择局部区域

print(df.loc['20140729':'20140730',['A','B']])

20.选择一个数据

print(df.at[dates[0],'A'])

DateFrame的切片操作

DateFrame数据框允许我们使用iloc方法来操作array(数组)一样对DateFrame进行切片操作

1.提取第四行数据

print(df.iloc[3])
A    0.971871
B   -1.754257
C    0.353075
D    0.040768

2.返回4-5行,1-2列数据如下面用法

print(df.iloc[3:5,0:2])
          A         B
3  0.971871 -1.754257
4  0.282643 -0.622204

3.返回1.2.4行,1-2列

print(df.iloc[[1,2,4],[0,2]])
         A         C
1 -1.344699  2.025082
2 -0.204610 -0.367524
4  0.282643  0.131546

DateFrame筛选

1.筛选D列中大于0的行,

print(df[df.D>0])
          A         B         C         D
0 -0.192291 -0.078935  0.856357  1.988780
2 -1.850391 -0.623199 -0.070384  0.346600
3 -0.539915  0.881186  0.173343  1.709659

2.筛选D列大于0,C列小于0的行

print(df[(df.D>0) &(df.C<0)])
          A         B         C       D
2 -1.850391 -0.623199 -0.070384  0.3466

3.只需要A,B列,C,D列都是用来筛选的

print(df[['A','B']][(df.D>0) &(df.C<0)])
          A         B
2 -1.850391 -0.623199

4.使用isin方法来筛选特定的值,把要把筛选的值写到一个列表里,如alist

alist=[ 0.047038 ,-0.191705 , 0.449810]
print(df['D'].isin(alist))
0    False
1    False
2    False
3    False
4    False
5    False

猜你喜欢

转载自blog.csdn.net/qq_41338249/article/details/82664040