微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas 第二部分

  1 import numpy as np
  2 import pandas as pd
  3 
  4 df = pd.read_excel("d:/test.xlsx")
  5 if 0 :
  6     print(df.dtypes)  #查看数据的列的类型
  7     pass
  8 
  9 #查找一个条目 并删除
 10 if 0:
 11     # 查找一个条目
 12     print(df[(df['年龄'] == 18) & (df['姓名'] == '李四')])
 13     # 删除它
 14     df.drop([62], inplace=True)
 15     print(df[60:64])  # 发现62 已经没有了
 16 
 17     #因为上面删除了一些条目,所以index 就不会连续了
 18     #然后重新更新它的index
 19     df.index = range(len(df))
 20 
 21 #数据格式的  查看(dtype ) 与 装换 astype()
 22 if 0:
 23     #查看格式  dtype
 24     if 0:
 25         print(df["年龄"].dtype )  #int64
 26         print(df['姓名'].dtype)   #object
 27         print(df["学号"].dtype )  #int64
 28         print(df["工资"].dtype )  #float64
 29         pass
 30     #将年龄转为 浮点格式 astype()
 31     if 0:
 32         df['年龄'] = df['年龄'].astype(float) #认指的是float64
 33         print(df.dtypes)
 34         pass
 35     #将工资转为整数格式  astype()
 36     if 0:
 37         df['工资'] = df['工资'].astype(int)  #int 指的是int32
 38         print(df.dtypes)
 39         pass
 40     pass
 41 
 42 #排序
 43 if 0:
 44     #认排序
 45     if 0:
 46         #认排序是按照index 来的
 47         pass
 48     #按照年龄排序
 49     if 0:
 50         if 0:
 51             print( df.sort_values(by='年龄') )   #认是升序
 52         #降序排列
 53         print(df.sort_values(by='年龄',ascending = False) )
 54 
 55         pass
 56     #按照学号排序
 57     if 0:
 58         print(df.sort_values(by='学号',ascending = False ))
 59         pass
 60 
 61     #多个值排序 ,先按照学号 ,再按照年龄
 62     if 0:
 63         print( df.sort_values(by=['学号','年龄'])  )
 64         pass
 65 
 66 
 67 
 68     pass
 69 
 70 #基本统计分析
 71 if 0:
 72     # 1,描述性统计
 73     if 0:
 74         res = df.describe()  #对df 中的数值提供描述性统计
 75         print(res)
 76         #而且,我们往往还可以在描述性统计中的极值中发现异常的数值
 77         pass
 78     # 2,最值
 79     if 0:
 80         ret = df['年龄'].min()
 81         print(ret)
 82 
 83         ret = df['年龄'].max()
 84         print(ret)
 85 
 86         ret = df['工资'].min()
 87         print(ret)
 88 
 89         ret = df['工资'].max()
 90         print(ret)
 91         pass
 92     # 3,均值和中值
 93     if 0:
 94         ret = df['年龄'].mean()
 95         print(ret)
 96 
 97         ret = df['年龄'].median()
 98         print(ret)
 99 
100         pass
101     # 4,方差和标准差
102     if 0:
103         ret = df['工资'].var() #方差
104         print(ret)
105 
106         ret = df['工资'].std() #方差 = 标准差的平方
107         print(ret )
108         pass
109     # 5,求和
110     if 0:
111         ret = df['工资'].sum()
112         print(ret)
113         pass
114     # 6,相关系数,协方差   #这就涉及到两个变量了
115     if 0:
116         ret = df[['年龄','工资' ]].corr()  #相关系数
117         print(ret)
118 
119         ret = df[['年龄','工资']].cov()  #协方差
120         print(ret)
121 
122         pass
123     # 7,计数
124     if 1:
125         #算多少行
126         if 0:
127             ret = len(df)
128             print(ret)
129         if 0:
130             #算有多少个人
131             ret = df['姓名'].unique()
132             print(ret)
133             print(len(ret))  #9 个人
134 
135             if 0:  # 现在要解决  张三和 张昌博是同一个人的问题 ,
136                 df['姓名'].replace('张三','张昌博',inplace=True    )
137                 ret = df['姓名'].unique()
138                 print(ret)  #这时就得到了 正确的所有的人
139 
140                 #一次替换多个值  (用列表表示  )
141                 if 0 :
142                     df['姓名'].replace(['张昌博','李四'],['张三','李大四'],inplace=True)
143                     print(df['姓名'].unique())
144                 pass
145 
146             pass
147 
148         if 0:
149             #算出每个姓名都有多少行  value_counts()
150             ret = df['姓名'].value_counts()  #认是从大到小
151             print(ret)
152             pass
153         pass
154     pass
155 
156 #保存数据
157 if 0:
158     df.to_excel("d:/test03.xlsx")
159     pass
160 
161 
162 #数据透视
163 if 0:
164     #Excel 的数据透视表使用的非常广泛 ,Pandas 也提供了数据透视表的功能,名为pivot_table 。
165 
166     #1,基本形式
167     if 0:
168         ret = pd.pivot_table(df,index=['学号'])
169         #认进行的聚合计算是  均值计算
170         print(ret)
171         #如何解决显示不全的问题
172         if 0:
173             pd.set_option('max_columns',100) #最大 100 列
174             pd.set_option('max_rows',500)  #最大 500行
175             print(ret)
176 
177 
178 
179         pass
180     # 2,也可以有多个索引。实际上,大多数的pivot_table 参数可以通过列表获取多个值
181     if 0:
182         ret = pd.pivot_table(df,index = ['学号','姓名'])
183         print(ret)
184         pass
185 
186     # 3,也可以制定需要统计汇总的数据
187     if 0:
188         #在 2 的基础上  ,但是我们只需要工资那一列就好了
189         ret = pd.pivot_table(df,index=['学号','姓名'],values='工资')
190         print(ret)
191         pass
192     # 4,还可以指定函数,来统计不同的统计值
193     if 0:
194         #注意:aggfunc 去制定  计算的方式,认是取 平均值
195         if 0:
196             ret = pd.pivot_table(df,index=['学号','姓名'],values='工资',aggfunc=np.sum )
197             print(ret)
198             pass
199 
200         if 0:
201             #values 也可以是多个
202             ret = pd.pivot_table(df,index='姓名',values=['年龄','工资'],aggfunc=np.sum)
203             print(ret)
204             pass
205 
206     # 5,非数值NaN  难以处理 ,如果要移除它们 ,可以使用“fill_value ” 将其设置为0
207     if 0:
208         #aggfunc 也可以是多个
209         if 0:
210             ret = pd.pivot_table(df,index=['姓名'],aggfunc=[np.sum,np.mean])
211             print(ret)
212 
213         ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],fill_value=0)
214         print(ret)
215         pass
216     # 6,加入margins = True  可以在下方显示一些总和数据
217     if 0:
218         ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],margins=True)
219         print(ret)
220         pass
221     pass
222     # 7,对不同值执行不同的函数:可以向 aggfunc传递一个字典。不过,这样有个副作用,就是必须将标签做的更加简洁才行
223     if 0:
224         #对工资求综合 ,对年龄求均值
225         ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean })
226         print(ret)
227         pass
228 
229 #数据透视表的过滤
230 if 0:
231     ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} )
232     # print(ret)
233     # print(type(ret))  #<class 'pandas.core.frame.DataFrame'>
234 
235     if 0:
236         print(ret[:5]) #前 五行
237         pass
238     if 0:
239         ret = ret [ ret.index == '张昌博']
240         print(ret)
241 
242     if 0:
243         ret = ret.sort_values('工资',ascending=False  )
244         print(ret)
245         pass
246 
247     pass
248 
249 #数据透视  对多个索引来进行 汇总  下次课更详细的讲   
250 if 0:
251     ret = pd.pivot_table(df,index=['学号','姓名'],values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} )
252     print(ret)
253     
View Code

 

 

相应的excel 数据:

 

学号	姓名	年龄	工资
17096218	张三	28	12345.23
17096218	张三	19	13345.23
17096218	张三	20	14345.23
17096221	张三	21	15345.23
17096222	张三	22	16345.23
17096223	张三	23	17345.23
17096224	张三	24	18345.23
17096225	张三	25	19345.23
17096226	张三	26	20345.23
17096227	张三	27	21345.23
17096227	张三	28	22345.23
17096227	张三	29	23345.23
17096230	张三	30	24345.23
17096231	张三	31	25345.23
17096232	张三	32	26345.23
17096233	张三	33	27345.23
17096234	张三	34	28345.23
17096235	张三	35	29345.23
17096236	张三	36	30345.23
17096237	张三	37	31345.23
17096238	张三	38	32345.23
17096239	张三	39	33345.23
17096240	张三	40	34345.23
17096241	张三	41	35345.23
17096242	张三	42	36345.23
17096243	张三	43	37345.23
17096244	张三	44	38345.23
17096245	张三	45	39345.23
17096245	张三	46	40345.23
17096245	张三	47	41345.23
17096245	张三	48	42345.23
17096245	张三	49	43345.23
17096250	张三	50	44345.23
17096251	张三	51	45345.23
17096252	张三	52	46345.23
17096253	张昌博	18	47345.23
17096254	张昌博	19	48345.23
17096255	张昌博	20	49345.23
17096256	张昌博	21	50345.23
17096257	张昌博	22	51345.23
17096258	张昌博	23	52345.23
17096258	张昌博	24	53345.23
17096258	张昌博	25	54345.23
17096258	张昌博	26	55345.23
17096258	张昌博	27	56345.23
17096263	张昌博	28	57345.23
17096264	张昌博	29	58345.23
17096265	张昌博	30	59345.23
17096266	张昌博	31	60345.23
17096267	张昌博	32	61345.23
17096268	张昌博	33	62345.23
17096269	张昌博	34	63345.23
17096270	张昌博	35	64345.23
17096271	张昌博	36	65345.23
17096272	张昌博	37	66345.23
17096273	张昌博	38	67345.23
17096274	张昌博	39	68345.23
17096275	张昌博	40	69345.23
17096276	张昌博	41	70345.23
17096277	张昌博	42	71345.23
17096278	张昌博	43	72345.23
17096279	张昌博	44	73345.23
17096280	李四	18	74345.23
17096281	李四	19	75345.23
17096281	李四	20	76345.23
17096281	李四	21	77345.23
17096281	李四	22	78345.23
17096281	李四	23	79345.23
17096281	李四	24	80345.23
17096281	李四	25	81345.23
17096288	李四	26	82345.23
17096289	李四	27	83345.23
17096290	李四	28	84345.23
17096291	李四	29	85345.23
17096292	李四	30	86345.23
17096293	李四	31	87345.23
17096294	李四	32	88345.23
17096295	李四	33	89345.23
17096296	李四	34	90345.23
17096297	李四	35	91345.23
17096298	李四	36	92345.23
17096299	李四	37	93345.23
17096300	李四	38	94345.23
17096301	李四	39	95345.23
17096302	李四	40	96345.23
17096303	李四	41	97345.23
17096304	李四	42	98345.23
17096305	李四	43	99345.23
17096306	李四	44	100345.23
17096307	李四	45	101345.23
17096308	李四	46	102345.23
17096309	李四	47	103345.23
17096310	李四	48	104345.23
17096311	李四	49	105345.23
17096312	李四	50	106345.23
17096313	李四	51	107345.23
17096314	李四	52	108345.23
17096315	李四	53	109345.23
17096316	李四	54	110345.23
17096317	李四	55	111345.23
17096318	李四	56	112345.23
17096319	李四	57	113345.23
17096320	李四	58	114345.23
17096321	李四	59	115345.23
17096322	李四	60	116345.23
17096323	李四	61	117345.23
17096324	李四	62	118345.23
17096325	李四	63	119345.23
17096326	王五	18	120345.23
17096327	王五	19	121345.23
17096328	王五	20	122345.23
17096329	王五	21	123345.23
17096330	王五	22	124345.23
17096331	王五	23	125345.23
17096332	王五	24	126345.23
17096333	王五	25	127345.23
17096334	王五	26	128345.23
17096335	王五	27	129345.23
17096336	王五	28	130345.23
17096336	王五	29	131345.23
17096336	王五	30	132345.23
17096336	王五	31	133345.23
17096336	王五	32	134345.23
17096336	王五	33	135345.23
17096336	王五	34	136345.23
17096336	王五	35	137345.23
17096336	王五	36	138345.23
17096336	王五	37	139345.23
17096346	王五	38	140345.23
17096347	王五	39	141345.23
17096348	王五	40	142345.23
17096349	王五	41	143345.23
17096350	王五	42	144345.23
17096351	王五	43	145345.23
17096352	王五	44	146345.23
17096353	王五	45	147345.23
17096354	王五	46	148345.23
17096354	王五	47	149345.23
17096354	王五	48	150345.23
17096354	王五	49	151345.23
17096354	王五	50	152345.23
17096354	王五	51	153345.23
17096354	王五	52	154345.23
17096354	王五	53	155345.23
17096362	赵六	18	156345.23
17096363	赵六	19	157345.23
17096364	赵六	20	158345.23
17096365	赵六	21	159345.23
17096366	赵六	22	160345.23
17096367	赵六	23	161345.23
17096368	赵六	24	162345.23
17096369	赵六	25	163345.23
17096370	赵六	26	164345.23
17096371	赵六	27	165345.23
17096372	赵六	28	166345.23
17096373	赵六	29	167345.23
17096374	赵六	30	168345.23
17096375	赵六	31	169345.23
17096376	赵六	32	170345.23
17096377	赵六	33	171345.23
17096378	赵六	34	172345.23
17096379	赵六	35	173345.23
17096380	赵六	36	174345.23
17096381	赵六	37	175345.23
17096382	赵六	38	176345.23
17096383	赵六	39	177345.23
17096384	赵六	40	178345.23
17096385	赵六	41	179345.23
17096386	赵六	42	180345.23
17096387	赵六	43	181345.23
17096388	赵六	44	182345.23
17096389	赵六	45	183345.23
17096390	赵六	46	184345.23
17096391	赵六	47	185345.23
17096392	赵六	48	186345.23
17096393	赵六	49	187345.23
17096394	赵六	50	188345.23
17096395	赵六	51	189345.23
17096396	赵六	52	190345.23
17096397	赵六	53	191345.23
17096398	赵六	54	192345.23
17096399	陈七	18	193345.23
17096400	陈七	19	194345.23
17096218	陈七	20	195345.23
17096219	陈七	21	196345.23
17096220	陈七	22	197345.23
17096221	陈七	23	198345.23
17096222	陈七	24	199345.23
17096223	陈七	25	200345.23
17096224	陈七	26	201345.23
17096225	陈七	27	202345.23
17096226	陈七	28	203345.23
17096227	陈七	29	204345.23
17096228	陈七	30	205345.23
17096229	陈七	31	206345.23
17096230	陈七	32	207345.23
17096231	陈七	33	208345.23
17096232	陈七	34	209345.23
17096233	陈七	35	210345.23
17096234	陈七	36	211345.23
17096235	陈七	37	212345.23
17096236	陈七	38	213345.23
17096237	陈七	39	214345.23
17096238	沈八	40	215345.23
17096239	沈八	41	216345.23
17096240	沈八	42	217345.23
17096241	沈八	43	218345.23
17096242	沈八	44	219345.23
17096243	沈八	45	220345.23
17096244	沈八	46	221345.23
17096245	沈八	47	222345.23
17096246	沈八	48	223345.23
17096247	沈八	49	224345.23
17096248	沈八	50	225345.23
17096249	沈八	51	226345.23
17096250	沈八	52	227345.23
17096251	沈八	53	228345.23
17096252	沈八	54	229345.23
17096253	沈八	55	230345.23
17096254	沈八	56	231345.23
17096255	沈八	57	232345.23
17096256	沈八	58	233345.23
17096257	沈八	59	234345.23
17096258	沈八	60	235345.23
17096259	沈八	61	236345.23
17096260	沈八	62	237345.23
17096261	沈八	63	238345.23
17096262	沈八	64	239345.23
17096263	沈八	65	240345.23
17096264	沈八	66	241345.23
17096265	沈八	67	242345.23
17096266	沈八	68	243345.23
17096267	沈八	69	244345.23
17096268	沈八	70	245345.23
17096269	沈八	71	246345.23
17096270	沈八	72	247345.23
17096271	沈八	73	248345.23
17096272	沈八	74	249345.23
17096273	沈八	75	250345.23
17096274	沈八	76	251345.23
17096275	沈八	77	252345.23
17096276	沈八	78	253345.23
17096277	沈八	79	254345.23
17096278	沈八	80	255345.23
17096279	沈八	81	256345.23
17096280	沈八	82	257345.23
17096281	沈八	83	247345.23
17096282	沈八	84	237345.23
17096283	沈八	85	227345.23
17096284	沈八	86	217345.23
17096285	沈八	87	207345.23
17096286	沈八	88	197345.23
17096287	沈八	89	187345.23
17096288	沈八	90	177345.23
17096289	沈八	91	167345.23
17096290	沈八	92	157345.23
17096291	沈八	93	147345.23
17096292	沈八	94	137345.23
17096293	沈八	95	127345.23
17096294	沈八	96	117345.23
17096295	沈八	97	107345.23
17096296	沈八	98	97345.23
17096297	吴九	18	87345.23
17096298	吴九	19	77345.23
17096299	吴九	20	67345.23
17096300	吴九	21	57345.23
17096301	吴九	22	47345.23
17096302	吴九	23	37345.23
17096303	吴九	24	47345.23
17096304	吴九	25	57345.23
17096305	吴九	26	67345.23
17096306	吴九	27	77345.23
17096307	吴九	28	87345.23
17096308	吴九	29	97345.23
17096309	吴九	30	107345.23
17096310	吴九	31	117345.23
17096311	吴九	32	127345.23
17096312	吴九	33	137345.23
17096313	吴九	34	147345.23
17096314	吴九	35	157345.23
17096315	吴九	36	167345.23
17096316	吴九	37	177345.23
17096317	吴九	38	187345.23
17096318	吴九	39	197345.23
17096319	吴九	40	207345.23
17096320	吴九	41	217345.23
17096321	吴九	42	227345.23
17096322	吴九	43	237345.23
17096323	吴九	44	247345.23
17096324	吴九	45	257345.23
17096325	吴九	46	267345.23
17096326	吴九	47	277345.23
17096327	吴九	48	287345.23
17096328	吴九	49	297345.23
17096329	吴九	50	307345.23
17096330	吴九	51	317345.23
17096331	吴九	52	327345.23
17096332	吴九	53	337345.23
17096333	吴九	54	347345.23
17096334	吴九	55	357345.23
17096335	吴九	56	367345.23
17096336	吴九	57	377345.23
17096337	吴九	58	387345.23
17096338	吴九	59	397345.23
17096339	吴九	60	407345.23
17096340	吴九	61	417345.23
17096341	吴九	62	427345.23
17096342	吴九	63	437345.23
17096343	吴九	64	447345.23
17096344	吴九	65	457345.23
17096345	吴九	66	467345.23
17096346	吴九	67	477345.23
17096347	吴九	68	487345.23
17096348	吴九	69	497345.23
17096349	吴九	70	507345.23
17096350	吴九	71	517345.23
17096351	马十	18	527345.23
17096352	马十	19	537345.23
17096353	马十	20	547345.23
17096354	马十	21	557345.23
View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐