数据分析基础之《pandas(1)—pandas介绍》

一、pandas介绍

1、2008年Wes McKinney(韦斯·麦金尼)开发出的库

2、专门用于数据分析的开源python库

3、以numpy为基础,借力numpy模块在计算方面性能高的优势

4、基于matplotlib能够简便的画图

5、独特的数据结构

6、也是三个单词组合而成:panel + data + analysis
面板数据 - 来源于计量经济学,通常用来存储三维的数据

二、为什么使用pandas

1、numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas用在什么地方

2、便捷的数据处理能力

3、读取文件方便

4、封装了matplotlib、numpy的画图和计算

三、核心数据结构

1、pandas三大数据结构
DataFrame、Panel、Series

四、DataFrame

1、DataFrame结构
既有行索引,又有列索引的二维数组

2、如何创建更有意义的数据

import numpy as np
# 创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))

stock_change

import pandas as pd
# 加上行列索引
pd.DataFrame(stock_change)

# 添加行索引
stock = ["股票%s" %str(i) for i in range (10)]

pd.DataFrame(stock_change, index=stock)

# 添加列索引
data = pd.date_range(start="20180101", periods=5, freq="B")

data

pd.DataFrame(stock_change, index=stock, columns=data)

3、DataFrame对象既有行索引,又有列索引
行索引:表明不同行,横向索引,叫index
列索引:表明不同列,纵向索引,叫columns

4、DataFrame的属性
常用属性:
(1)shape
(2)index:DataFrame的行索引列表
(3)columns:DataFrame的列索引列表
(4)values:直接获取其中array的值(排除行索引列索引后的值,就是ndarray)
(5)T:行列的转置

常用方法:
head():前几行
tail():后几行

五、DataFrame索引的设置

1、修改行列索引值
不能单独修改索引,只能整体修改

不能直接修改索引值:
data.index[3] = '股票_3'

必须整体全部修改:
stock_code = ["股票_" + str(i) for i in range(stock_change.shape[0])]
data.index = stock_code

2、重设索引
reset_index(drop=False)
说明:
(1)设置新的下标索引
(2)drop:默认为False,不删除原来索引(把原来索引当成普通列),如果为True,删除原来的索引值
(3)返回一个新对象,不改变原对象

# 重设索引
data2.reset_index()

data2.reset_index().shape

data2.reset_index(drop=True)

data2.reset_index(drop=True).shape

3、设置新的索引
set_index(keys, drop=True)
说明:
(1)keys:列索引名称或者列索引名称的列表
(2)drop:默认True,删除原来的索引
(3)返回一个新对象,不改变原对象

# 设置新的索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
                  'year': [2012, 2014, 2013, 1014],
                  'sale': [55, 40, 84, 31]})

df

# 以月份设置新的索引 
df.set_index("month")

# month作为新的索引,并且month列也没有扔掉
df.set_index("month", drop=False)

# 设置多个索引,以年和月份
new_df = df.set_index(["year","month"])

new_df

new_df.index

我们说的索引,默认都是0—10的,对吧?我们在日常的数组里,索引都是隐藏的,也就是一个“虚”的存在,不算入列数或行数的。
那么,在这里的索引设置和后面的series索引设置里,他们的索引部分依然是“虚”的,你虽然看到了,但是他不能算入行数或列数里。

六、MultiIndex和Panel

1、MultiIndex
上面new_df被设置成了具有MultiIndex的DataFrame,可以用来存储三维数据
new_df.index它是多级或分层索引对象

index属性
说明:
(1)names:levels的名称
(2)levels:每个level的元组值

# MultiIndex
new_df.index.names

new_df.index.levels

2、Panel
Panel是一个用来承载数据的三维数据结构(用来存储三维结构的面板数据),它有三个轴,分别是items(0轴),major_axis(1轴),而minor_axis(2轴)。这三个轴为描述、操作Panel提供了支持

pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
说明:
(1)data:数据采取各种形式,如:ndarray,series,map,lists,dict,DataFrame
(2)items:axis=0,Panel中的每个items都对应一个DataFrame
(3)major_axis:axis=1,用来描述每个DataFrame的行索引
(4)minor_axis:axis=2,用来描述每个DataFrame的列索引
(5)dtype:每列的数据类型
(6)copy:复制数据,默认false

注意:自Pandas 0.25版本后,Panel结构已经被废弃

推荐的用于表示3D数据的方法是DataFrame上的MultiIndex方法,就是上面的具有MultiIndex的DataFrame

七、Series

1、如何获取DataFrame中某个股票的不同时间数据?这样的结构是什么?
即是抽取一行的数据,它是什么结构

data2

data2.iloc[1, :]

data2.iloc[1, :].index

2、Series是什么结构
带列索引的一维数组

3、Series属性和方法
(1)index属性:相关数据的索引标签
(2)values属性:一组数据(ndarray类型)
(3)例子:

# Series
sr = data2.iloc[1, :]

sr

sr.index

sr.values

type(sr.values)

4、创建Series
(1)通过已有数据创建
    指定内容,默认索引(从0开始排)
    pd.Series(np.arange(10))
    指定索引
    pd.Series([6.7, 5.6, 3, 10, 2], index=[1, 2, 3, 4, 5])

(2)通过字典数据创建
    pd.Series({'red':100, 'blue':200, 'green':500, 'yellow':1000})
    字典的键作为索引,字典的值作为具体的值

八、小结

1、DataFrame是即带行索引又带列索引的二维数据
2、Series是带索引的一维数组
3、DataFrame是Series的容器
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值