1 Pandas基础
pandas是python中数据分析核心库,能够快速,灵活的对大量数据进行分析,是Python进行数据分析的必要利器;
pandas支持多种数据导入,支持数据合并,拆分,基本统计,时间序列分析,透视表等多种操作
1.1 Series数据结构
Series:一维的带索引数据结构(单列)
Series类:pd.Series(data=None,index=None,dtype=None,name=None,copy=False,fastpath=False)
创建Series对象
第一列为索引,第二列为Series数据
import pandas as pd
import numpy as np
sdata = pd.Series(np.arange(1,4), index=list('abc'))
sdataa 1
b 2
c 3
dtype: int322 Series对象访问
.iloc[]确保你按位置而不是标签访问Series对象的元素。
# 默认数字索引
print(sdata.iloc[0])
# 使用loc方式,只能使用标签
print(sdata.loc['c'])
1
3
获取index与value
# 获取索引
sdata.index.valuesarray(['a', 'b', 'c'], dtype=object)# 获取索引
sdata.valuesarray([1, 2, 3])将index与value转成列表
# 将索引转成列表
sdata.index.values.tolist()
['a', 'b', 'c']
# 将数据转成列表
sdata.values.tolist()
[1, 2, 3]
# Series对象访问
for item in sdata.items():
print(item)
('a', 1)
('b', 2)
('c', 3)
1.2 DataFrame数据结构
DataFrame:多种类型的列构成的二维标签数据结构(多列);
DataFrame类:
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
data:一维数据,二维数据
index:行标签
columns:列标签
1.2.1 Dataframe创建
1.一行一列
# 一维数据
pd.DataFrame(data=np.arange(1,4))
0
0 1
1 2
2 3
2.多列
# 多维数据 data为4X4
data = np.arange(16).reshape(4,4)
pd.DataFrame(data=data)
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15设置index与columns
# 设置index与columns
data = np.arange(16).reshape(4,4)
pdata = pd.DataFrame(data=data, index=list('abcd'), columns=['c1','c2','c3','c4'])
pdata
c1 c2 c3 c4
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
设置index与columns
# 设置index与columns
data = {'c1':[1,2,3], 'c2':[4,5,6]}
pdata = pd.DataFrame(data=data)
pdata
c1 c2
0 1 4
1 2 5
2 3 6设置列标签
# 设置列标签
pdata.columns = ['t1','t2']
pdata
t1 t2
0 1 4
1 2 5
2 3 61.2.2 DataFrame对象访问
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
pdata
c1 c2 c3
0 1 4 7
1 2 5 8
2 3 6 9获取指定列
# 获取一列数据,返回Series对象
pdata['c1']
0 1
1 2
2 3
Name: c1, dtype: int64
# 取多列数据
pdata[['c1','c2']]
c1 c2
0 1 4
1 2 5
2 3 6loc操作
loc操作:使用类似列表方式去对数据进行访问,支持bool索引;
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
pdata
c1 c2 c3
0 1 4 7
1 2 5 8
2 3 6 9获取指定行
# 获取第一行
pdata.loc[0]
c1 1
c2 4
c3 7
Name: 0, dtype: int64
# 获取第一行指定c1,c2列
pdata.loc[0,['c1','c2']]
c1 1
c2 4
Name: 0, dtype: int64
遍历DataFrame对象
# 获取列索引
for item in pdata:
print(item)
c1
c2
c3
# 按列遍历
for item in pdata.items():
print(item)
('c1', 0 1
1 2
2 3
Name: c1, dtype: int64)
('c2', 0 4
1 5
2 6
Name: c2, dtype: int64)
('c3', 0 7
1 8
2 9
Name: c3, dtype: int64)
# 按行遍历
for item in pdata.iterrows():
print(item)
(0, c1 1
c2 4
c3 7
Name: 0, dtype: int64)
(1, c1 2
c2 5
c3 8
Name: 1, dtype: int64)
(2, c1 3
c2 6
c3 9
Name: 2, dtype: int64)
1.2.3 DataFrame修改
修改元素
# 修改元素
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
# 修改c1列值
pdata['c1'] = 0
pdata
c1 c2 c3
0 0 4 7
1 0 5 8
2 0 6 9DataFrame插入列
# DataFrame插入列
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
pdata['c4'] = [-1,-1,-1]
pdata
c1 c2 c3 c4
0 1 4 7 -1
1 2 5 8 -1
2 3 6 9 -1DataFrame插入行
# DataFrame插入行
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
# 修改c1列值
pdata.loc[3] = [-1,-1,-1]
pdata
c1 c2 c3
0 1 4 7
1 2 5 8
2 3 6 9
3 -1 -1 -12 pandas数据导入与保存
目的:
数据导入:excel, csv文件
数据导出
基本统计
缺省数据处理