pandas与numpy的区别
chengji=[['', '期末', '期末'], ['张三',50, 80], ['李四', 60, 90], ['王老五', 70, 89]]
np.array(chengji)
#array([['', '期末', '期末'],
#['张三', '50', '80'],
#['李四', '60', '90'],
#['王老五', '70', '89']], dtype='<U3')
上图是使用numpy得出的结果
dic={ ' 期 中 ':[50,60,70], ' 期 末':[80,90,89]}
pd.DataFrame(dic,index=['张三','李四','王老五'])
上图是使用pandas得出的结果
Pandas库简介
pandas官网
pandas扩展包的安装
- win+R打开命令行
- 输入pip install pandas
pandas扩展包的调用
import pandas as pd
pandas数据结构
pandas库的理解
Numpy | Pandas |
基础数据类型
|
扩展数据类型
|
关注数据的结构表达
|
关注数据的应用表达
|
维度:数据间的关系 |
数据与索引间的关系
|
相同操作,输出形式对比:
np.arange(4)
#array([0,1,2,3])
pd.Series(np.arange(4))
#0 0
#1 1
#2 2
#3 3
#dtype: int32
可以看出使用pandas库可视化程度更高,能以比较清晰直观的形式展现处理后的数据
series对象类型
series对象的创建
dp.Serise(obj=None, index=None, dtype=None)
创建时注意事项
b=pd.Series([9,8,7],['a','b','c'])
#b
#a 9
#b 8
#c 7
#dtype: int64
>>> b.values
array([9, 8, 7], dtype=int64)
>>>b.index #索引
Index(['a', 'b', 'c'], dtype='object’)
>>> b.index.name='索引' #定义索引的名字
>>> b.name='Series对象' #对象名
>>> b
索引
a 9
b 8
c 7
Name: Series对象, dtype: int64
>>> b=pd.Series([9,8,7],['a','b','c'])
>>> b
a 9
b 8
c 7
dtype: int64
>>> b[b>=b.median()]
a 9
b 8
dtype: int64
>>> np.exp(b)
a 8103.083928
b 2980.957987
c 1096.633158
d 403.428793
dtype: float64
>>> b=pd.Series([9,8,7],['a','b','c'])
>>> b
a 9
b 8
c 7
dtype: int64
>>> b['a']
9
>>> 'c' in b
True
>>> b.get('a')
9
series常用函数
DataFrame对象类型
- DataFrame类型由共用相同索引的一组列组成。
- DataFrame是一个表格型的数据类型,每列值类型可以不同
- DataFrame既有行索引(index)、也有列索引(columns)
- DataFrame常用于表达二维数据,但可以表达多维数据。
DataFrame创建
pd.DataFrame(data=None, index=None, columns=None, dtype=None)
df=pd.DataFrame(np.random.randint(60,100,size=(2,3)),index=['期中','期末'],columns=['张三','李四','王老五'])
>>> df.values
array([[70, 92, 72],
[60, 60, 88]])
>>> df.shape
(2,3)
>>> df.index
Index(['期中', '期末'], dtype='object')
>>> df.columns
Index(['张三', '李四', '王老五'], dtype='object')
>>> df.describe()
张三 李四 王老五
count 2.000000 2.000000 2.000000
mean 65.000000 76.000000 80.000000
std 7.071068 22.627417 11.313708
min 60.000000 60.000000 72.000000
25% 62.500000 68.000000 76.000000
50% 65.000000 76.000000 80.000000
75% 67.500000 84.000000 84.000000
max 70.000000 92.000000 88.000000
根据行列参数索引。
>>> df.['x']
a 0
b 3
c 6
Name: x, dtype: int32
根据整数位置参数索引
>>> df.iloc[1,:]
x 3
y 4
z 5
Name:b, dtype: int32
某个轴上拥有多个索引级别
>>> df.['x','z']
a 0 2
b 3 5
c 6 8
列索引
>>> df['qizhong']
张三 50
李四 60
王老五 70
Name: qizhong, dtype: int64
>>> df[['qizhong', 'qimo']]
qizhong qimo
张三 50 80
李四 60 90
王老五 70 89
行索引
>>> df.loc['张三']
qizhong 50
qimo 80
Name: 张三, dtype: int64
>>> df.loc[['李四', '张三']]
qizhong qimo
李四 60 90
张三 50 80
效果图
位置索引
df=pd.DataFrame(np.arange(16).reshape((4,4)),index=["a","b","c","d"],columns=["w","x","y","z"])
>>> df.loc['a':'c']
>>> df.iloc[:3, :]
w x y z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
>>> df[['w', 'y']]
>>> df.iloc[:, [0,2]]
w y
a 0 2
b 4 6
c 8 10
d 12 14
重新索引
删除指定索引
pd.drop(labels, axis=0)
>>> d
城市 环比 同比 定基
0 北京 101.5 120.7 121.4
1 上海 101.2 127.3 127.8
2 广州 101.3 119.4 120.0
3 深圳 102.0 145.5 125.3
4 沈阳 101.1 101.4 101.6
>>> d.drop(3)
城市 环比 同比 定基
0 北京 101.5 120.7 121.4
1 上海 101.2 127.3 127.8
2 广州 101.3 119.4 120.0
4 沈阳 101.1 101.4 101.6
>>> d.drop('同比', axis =1)
城市 环比 定基
0 北京 101.5 121.4
1 上海 101.2 127.8
2 广州 101.3 120.0
4 沈阳 101.1 101.6
Pandas库常用操作
实例
a=pd.DataFrame(np.arange(12).reshape((3,4)))
b=pd.DataFrame(np.arange(20).reshape((4,5)))
>>> a
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> b
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
方法形式的运算
实例
>>> a
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> b
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
#加法
>>> b.add(a, fill_value=100)
0 1 2 3 4
0 0.0 2.0 4.0 6.0 104.0
1 9.0 11.0 13.0 15.0 109.0
2 18.0 20.0 22.0 24.0 114.0
3 115.0 116.0 117.0 118.0 119.0
#乘法
>>> b.mul(b, fill_value=0)
0 1 2 3 4
0 0.0 1.0 4.0 9.0 0.0
1 20.0 30.0 42.0 56.0 0.0
2 80.0 99.0 120.0 143.0 0.0
3 0.0 0.0 0.0 0.0 0.0
Series与Dataframe之间的计算
传播运算(标量运算)
>>> c=pd.Series(np.arange(3))
0 0
1 1
2 2
dtype: int32
>>> c+1
0 1
1 2
2 3
dtype: int32
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> a+1
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
>>> c=pd.Series(np.arange(3))
0 0
1 1
2 2
dtype: int32
>>> c+1
0 1
1 2
2 3
dtype: int32
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> a+1
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
算数运算(传播机制)
>>> c=pd.Series(np.arange(4))
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
比较运算规则
>>> c=pd.Series(np.arange(4))
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
索引的排序
.sort_index(axis=0, ascending=True)
>>> b
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
>>> c=b.sort_index()
0 1 2 3 4
a 5 6 7 8 9
b 15 16 17 18 19
c 0 1 2 3 4
d 10 11 12 13 14
>>> c.sort_index(axis=1,ascending=False)
4 3 2 1 0
a 9 8 7 6 5
b 19 18 17 16 15
c 4 3 2 1 0
d 14 13 12 11 10
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False)
a = [[9,3,1],[1,2,8],[1,0,5]]
data = pd.DataFrame(a, index=["0", "2", "1"], columns=["c", "a", "b"])
idx = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('a', 2), ('b', 2), ('b', 1), ('b', 1)])
idx.names = ['first', 'second']
df_multi = pd.DataFrame({'A': np.arange(6, 0, -1)}, index=idx)
汇总和计算描述统计
汇总和计算描述统计:累计统计分析函数
obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
serieris.unique():是以数组形式返回列的所有唯一值(特征的所有唯一值)
>>> uniques = obj.unique()
array(['c', 'a', 'd', 'b'], dtype=object)
>>> uniques = obj.nunique()
4
>>> obj.value_counts()
a 3
c 3
b 2
d 1
dtype: int64
函数映射
df['col2'] = df['col1'].map(lambda x: x**2)
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds
>>> name=["张三","李四 ","王五"]
>>> idx=["指标1","指标2","指标3","指标4"]
>>>df=pd.DataFrame(np.random.randint(67,80,12).reshape((3,4)),index=name,colum
ns=idx)
>>> df.apply(lambda x:((x-min(x))/(max(x)-min(x)),axis=1)
指标1 指标2 指标3 指标4
张三 70 70 72 77
李四 79 67 73 74
王五 67 74 69 724
|
V
指标1 指标2 指标3 指标4
张三 0.0 0.0 0.285714 1.000000
李四 1.0 0.0 0.500000 0.583333
王五 0.0 1.0 0.285714 0.714286
apply函数(对行列用函数处理)
文章来源:https://www.toymoban.com/news/detail-442869.html
传送门:Python全套学习笔记文章来源地址https://www.toymoban.com/news/detail-442869.html
到了这里,关于Python学习笔记(十七)——Pandas库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!