赞
踩
- 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官网
import pandas as pd
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对象的创建
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常用函数
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.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
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
实例
- 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
- >>> 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函数(对行列用函数处理)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。