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)

  1. 创建Series对象

    第一列为索引,第二列为Series数据

import pandas as pd
import numpy as np
sdata = pd.Series(np.arange(1,4), index=list('abc'))
sdata
a    1
b    2
c    3
dtype: int32

2 Series对象访问

.iloc[]确保你按位置而不是标签访问Series对象的元素。

# 默认数字索引
print(sdata.iloc[0])
# 使用loc方式,只能使用标签
print(sdata.loc['c'])
1
3

  1. 获取index与value

# 获取索引
sdata.index.values
array(['a', 'b', 'c'], dtype=object)
# 获取索引
sdata.values
array([1, 2, 3])
  1. 将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

  1. 设置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

  1. 设置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

  1. 设置列标签

# 设置列标签
pdata.columns = ['t1','t2']
pdata



	t1	t2
0	1	4
1	2	5
2	3	6

1.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

  1. 获取指定列

# 获取一列数据,返回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	6

  1. loc操作

    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
  1. 获取指定行

# 获取第一行
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
  1. 遍历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修改
  1. 修改元素

# 修改元素
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	9
  1. DataFrame插入列

# 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	-1
  1. DataFrame插入行

# 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	-1

2 pandas数据导入与保存

目的:

  • 数据导入:excel, csv文件

  • 数据导出

  • 基本统计

  • 缺省数据处理