大数跨境
0
0

Pandas数据结构 ——Series与DataFrame篇

Pandas数据结构 ——Series与DataFrame篇 数据皮皮侠
2020-04-16
1
导读:Pandas是基于NumPy用于解决数据分析任务的一种工具,它纳入了大量库和一些标准的数据模型,提供了高效地

Pandas是基于NumPy用于解决数据分析任务的一种工具,它纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。虽然pandas量的NumPy编码格,但者最的不同是pandas是专为处理表格和混杂数据设计的。NumPy更适合处理统的数值数组数据。

要使pandas先得熟悉它的两个主要数据结构: SeriesDataFrame。虽然它们并不能解决所有问题,但它们为多数应提供了种可靠的、易于使的基础。今天我们来介绍SeriesDataFrame这两种数据结构的操作。

一、Series

Series是一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。Series能保存任何类型数据,包括整数,字符串,浮点数,boolean值、Python对象等。

参数:

- data 参数

- index 索引 索引值必须是唯一的和散列的,与数据的长度相同。默认np.arange(n)如果没有索引被传递。

- dtype 输出的数据类型 如果没有,将推断数据类型

- copy 复制数据 默认为false

1. Series创建

数组创建

1. import pandas as pd  

2. import numpy as np  

3. data = ['a','b','c','d','e']  

4. res= pd.Series(data,index=[i for i in range(1,6)],dtype=str)  

5. print(res) 

 

字典创建

1.   import pandas as pd  

2.   import numpy as np  

3.   data = {"a":1.,"b":2,"c":3,"d":4}  

4.   res = pd.Series(data,index=["d","c","b","a"])  

5.   print(res)        字典的键用于构建索引 

 

常量创建

1.   import pandas as pd  

2.   import numpy as np  

3. 如果数据是常量值,则必须提供索引。将重复该值以匹配索引的长度。  

4. res = pd.Series(5,index=[1,2,3,4,5])  

5. print(res) 

 

2. 数据访问

使用head()/tail()访问

1. data = [1,2,3,4,5]  

2. res = pd.Series(data,index=["a","b","c","d","e"])  

3. res.head(3)  查看前三个  

4. res.tail(2)  查看后两个  

 

访问指定行数据

1. data = [1,2,3,4,5]  

2. res = pd.Series(data,index=["a","b","c","d","e"])  

3. res  

4. res[[2,0,4]] #取出第204行数据 

 

3. 排序函数

4. data = [1,2,3,4,5]  

5. res= pd.Series(data,index=['a''b''c''d''e'])  

6. res  

7. res.sort_index(ascending=False) #index从大到小,True从小到大  

8. res.sort_values(ascending=False)  

9. res.rank(method='average',ascending=False,axis=0) #每个数的平均排名  

10.   

11. #返回含有最大值的索引位置:   

12. print(res.idxmax())  

13. #返回含有最小值的索引位置:   

14. print(res.idxmin()) 

 

二、DataFrame

DataFrame是⼀个表格型的数据结构,它含有⼀组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有⾏索引也有列索引,它可以被看做由Series组成的字典(共⽤同⼀个索引)。 DataFrame中的数据是以⼀个或多个⼆维块存放的(⽽不是列表、字典或别的⼀维数据结构)。

1. 数据表创建

我们读取证券时报网的一篇文章数据来创建数据表(http://data.stcn.com/2019/0304/14899644.shtml

 

1.   import pandas as pd  

2.   import numpy as np  

3.   df = pd.read_html("http://data.stcn.com/2019/0304/14899644.shtml",flavor ='lxml')  

4.   df  

5.  

6. index =['a','b','c']  

7. index  

8.   

9. df1 = pd.DataFrame(np.random.randn(3,4),index = index , columns = list('ABCD'))  

10. df1  

 

 

 

2. 数据的访问

读取文件生成DataFrame最常用的是read_csv,read_table方法。该方法中几个重要的参数如下所示:

 

参数

描述

header

默认第一行为columns,如果指定header=None,则表明没有索引行,第一行就是数据

index_col

默认作为索引的为第一列,可以设为index_col-1,表明没有索引列

nrows

表明读取的行数

sepdelimiter

分隔符,read_csv默认是逗号,而read_table默认是制表符\t

encoding

编码格式

 

3. 创建时间序列

用苹果201712个月的股票值来创建时间序列

 

1. import pandas as pd  

2. import numpy as np  

3.   

4. apple_share = pd.Series(np.random.randint(1000,3400,12))  

5. apple_share  

6.   

7. apple_index = pd.date_range(start='20170101',end='20171231',freq="M")  

8. apple_index  

9.   

10. apple_share.index = apple_index  

11. apple_share  

 

得到结果如下:

 

4. 缺失值处理

Pandas中缺失值相关的方法主要有以下三个:

isnull方法用于判断数据是否为空数据;

fillna方法用于填补缺失数据;

dropna方法用于舍弃缺失数据。

isnull方法和fillna方法对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数。

dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。

 

1. data.dropna(how='all',axis=1,inplace=True)  

2. data  

 

DataFrame填充缺失值可以统一填充,也可以按列填充,或者指定一种填充方式:  

1. data.fillna({1:2,2:3})  

 

5. 统计分析

Pandas中对于数值型数据的描述性统计主要包括了计算数值型数据的完整情况、最小值、均值、中位数、最大值、四分 位数、极差、标准差、方差等。名称如下:

方法名称

说明

方法名称

说明

min

最小值

max

最大值

mean

均值

ptp

极差

median

中位数

std

标准差

var

方差

COV

协方差

sem

标准误差

mode

众数

skew

样本偏度

kurt

样本峰度

quantile

四分位数

count

非空值数目

describe

描述统计

mad

平均绝对离差

 

6. 数据合并

PandasDataFrame数据合并、连接的操作可使用如下参数:

(1) concat

可以指定连接的方式(outer joininner join),还可以指定按照某个轴进行连接。

 

1. concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,   

2.   

3.        keys=None, levels=None, names=None, verify_integrity=False, copy=True):  

 

(2) merge

通过键拼接列,可以根据一个或多个键将不同的DatFrame连接起来。

 

1. merge(left, right, how='inner', on=None, left_on=None, right_on=None,    

2.   

3.       left_index=False, right_index=False, sort=True,    

4.   

5.       suffixes=('_x''_y'), copy=True, indicator=False)  

 

(3) join

主要用于索引上的合并。

1. join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False):  

【声明】内容源于网络
0
0
数据皮皮侠
社科数据综合服务中心,立志服务百千万社科学者
内容 2137
粉丝 0
数据皮皮侠 社科数据综合服务中心,立志服务百千万社科学者
总阅读615
粉丝0
内容2.1k