简介
可以看做是Excel
是基于Numpy的.
优点:处理表格数据(混杂数据)
需要引用:import pandas as pd
Series(无用)
类似于Numpy的一维数组
优点:相较于Nump索引功能强大
输出默认带索引:(当为字典是,,默认键是索引)
s4 = pd.Series([9.53,9.62,9.72])
创建时可以指定索引:
s5 = pd.Series([1, np.nan, 7.0, 'abc'], index=['a','b','c','d'])
DataFrame(常用)
类似于Numpy的二维数组
基本操作
获取行列数据
在 Pandas 中,有多个方法可以选取和重新组合数据,如表所示:
方法 | 说明 |
---|---|
df[val] | 从DataFrame中选取单列或多列。val为布尔型数组时,过滤行; val为切片时,行切片 |
df.loc[val] | 通过val选取单行或多行 |
df.loc[;,val] | 通过val选取单列或多列 |
df.loc[val1,val2] | 选取val1行、val2列的值 |
df.iloc[val] | 通过整数位置,选取单行或多行 |
df.iloc[;,val] | 通过整数位置,选取单列或多列 |
df.iloc[val1, val2] | 通过整数位置,选取val1 行、val2列的值 |
具体说明如下:
1、读取行
如果想从 DataFrame 中获取某一行数据,可以通过位置或名称进行获取。
读取行有三种方法,分别是loc,iloc,ix。
方法名 | 参数 | 备注 |
---|---|---|
loc | 行标签 | 可以使用元组 |
iloc | 行号 | 可以进行切片 |
ix | iloc和loc的并 | 不推荐使用IX索引器,已弃用 |
示例:
- loc通过行标签索引来确定行的
import pandas as pd
d=[[1,2,3,4],[5,6,7,8]]
index=["one","two"]
df=pd.DataFrame(d, index=index)
print df.loc["one"]
- iloc通过行号索引来确定行
import pandas as pd
d=[[1,2,3,4],[5,6,7,8]]
index=["one","two"]
df=pd.DataFrame(d, index=index)
print df.iloc[0]
2、读取列
如果想从 DataFrame 中获取某一列数据为一个 Series, 可以通过类似字典标记或属性的方式:
[]
括号里可以是列标签/列号
实例:
print df5['浦发银行'] #也可以是 df5[0]
#2020-10-14 9.53
#2020-10-15 9.62
#2020-10-16 9.72
#Name: 浦发银行, dtype: float64
df5[['浦发银行','民生银行']] #可以是个元组
# 浦发银行 民生银行
#2020-10-14 9.53 5.33
#2020-10-15 9.62 5.35
#2020-10-16 9.72 5.39
df5[df5['浦发银行'] > 9.6] # 同时可以进行筛选数据
# 浦发银行 民生银行
#2020-10-15 9.62 5.35
#2020-10-16 9.72 5.39
对行列赋值
对DataFrame中某一列的值进行修改,可通过直接赋值一个标量值或一组值:
df5 = pd.DataFrame({'a':[1,2,3],'b':[5,6,7],
'c':[9,10,11],'d':[13,14,15]},
index=['x','y','z'])
# a b c d
#x 1 5 9 13
#y 2 6 10 14
#z 3 7 11 15
df5['d'] = 1 # 对d列赋值为1
# a b c d
#x 1 5 9 1
#y 2 6 10 1
#z 3 7 11 1
df5['d'] = np.arange(3) # 对d列赋值为np.arange(3)
# a b c d
#x 1 5 9 0
#y 2 6 10 1
#z 3 7 11 2
如果赋值给一个 Series, 则会精准匹配对应索引的数值, 若 Series 缺失 DataFrame 某些索引,则对应位置为空:
df5['d'] = pd.Series([2,5,9],index = ['y','z','a'])
df5
常用方法
reindex()
表示重新索引,如果某个索引值当前不存在,就会引入
缺失值;可以通过fill_value参数填充默认值,也可以通过method参数设置填充方法;
reindex方法的methon参数的选项:
ffill或pad 前向填充值
bfill或backfill 后向填充值
或者是fill_value直接指定缺失值为多少
汇总,计算和描述性统计
Pandas 拥有一套常用的数学和统计方法, 但都是基于没有缺失数据的假设而构建的。
常用方法
读取excel表中的多个sheet
对于导入xlsx,pandas默认只导入第一个sheet,如果想导入多个/其他sheet需要指定:
# 按照index读取,1代表第二张表,默认是0 即默认只读取第一张表
>>> df = pd.read_excel(r'D:\myExcel/1.xlsx', sheet_name=1)
>>> df
name Chinese
0 lc 78
1 lb 79
# 按照表名读取
>>> df = pd.read_excel(r'D:\myExcel/1.xlsx', sheet_name='Sheet2')
>>> df
name Chinese
0 lc 78
1 lb 79
# 同时读取两张表,输入参数为列表
# 返回的是一个有序字典
>>> dfs = pd.read_excel(r'D:\myExcel/1.xlsx', sheet_name=[0, 'Sheet3'])
>>> dfs
OrderedDict([(0, name math science
0 bob 23 12
1 millor 32 32
2 jiken 61 89
3 tom 34 94
4 json 83 12
5 dela 96 67
6 rison 90 34), ('Sheet3', name English
0 ld 32
1 by 98)])
案例
【例】与书本不同,本节利用tushare读取招商银行股票数据,并进行 Pandas 基本操作。tushare为金融数据分析提供便捷、快速的接口,与投研和量化策略无缝对接 数据丰富 拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据。tushare是第三方库,因此,在首次使用时,需要通过pip安装。
import pandas as pd
import tushare as ts
import datetime
ZSYH = ts.get_hist_data('600036', '2020-08-31', '2020-09-11')
ZSYH.head(3)
ZSYH.tail(3)
标签:__,10,index,Python,df,2020,pd,df5,Pandas
From: https://www.cnblogs.com/kingwz/p/16133754.html