一,pandas数据分析pandas是一种基于Numpy的开源数据分析工具包,提供了高性能,简单易用的数据结构和数据分析函数

pip show numpy
Name: numpy
Version: 1.21.5
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: 
License: BSD
Location: c:\users\administrator\anaconda3\lib\site-packages
Requires: 
Required-by: astropy, bkcharts, bokeh, Bottleneck, daal4py, datashader, datashape, gensim, h5py, holoviews, hvplot, imagecodecs, imageio, matplotlib, mkl-fft, mkl-random, numba, numexpr, pandas, patsy, pyerfa, PyWavelets, scikit-image, scikit-learn, scipy, seaborn, statsmodels, tables, tifffile, xarray
Note: you may need to restart the kernel to use updated packages.
在 [2] 中:
pip show pandas
Name: pandas
Version: 1.4.4
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
Author: The Pandas Development Team
Author-email: pandas-dev@python.org
License: BSD-3-Clause
Location: c:\users\administrator\anaconda3\lib\site-packages
Requires: numpy, python-dateutil, pytz
Required-by: datashader, holoviews, hvplot, seaborn, statsmodels, xarray
Note: you may need to restart the kernel to use updated packages.
在 [3] 中:
pip show matplotlib
Name: matplotlib
Version: 3.5.2
Summary: Python plotting package
Home-page: https://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: c:\users\administrator\anaconda3\lib\site-packages
Requires: cycler, fonttools, kiwisolver, numpy, packaging, pillow, pyparsing, python-dateutil
Required-by: seaborn
Note: you may need to restart the kernel to use updated packages.

1.Series对象
(1)定义和创建
(2)数据访问
(3)常用方法
(1)定义和创建
Series对象是一种带有标签数据的一维数组,标签在Pandas中有对应的数据类型“Index”,Series类似于一维数组与字典的结合
在[6]中:
import pandas as pd
import numpy as np
在[11]中:
#pd.Series([5,8,6,3,47],index = ['a','b','c','d','e'])
pd.Series([5,8,6,3,47],index = list('abcde'))
输出[11]:
a     5
b     8
c     6
d     3
e    47
dtype: int64
在[15]中:
data = pd.Series({'邵' :89,'王' :98,'张' :60,'刘' :100})
在[16]中:
pd.Index(data)
输出[16]:
Int64Index([89, 98, 60, 100], dtype='int64')
在[17]中:
data.index
输出[17]:
Index(['邵', '王', '张', '刘'], dtype='object')
在[18]中:
data.values
输出[18]:
array([ 89,  98,  60, 100], dtype=int64)
在[19]中:
data.ndim
出[19]:
1
在[20]中:
data.shape
出[20]:
(4,)
在[21]中:
data.size
输出[21]:
4
(2)数据访问
In [22]:
data.keys() #用字典的形式keys()方法访问对象
Out[22]:
Index(['邵', '王', '张', '刘'], dtype='object')
In [23]:
list(data.items()) #用键值对items()方法访问
Out[23]:
[('邵', 89), ('王', 98), ('张', 60), ('刘', 100)]
In [24]:
data['邵']
Out[24]:
89
In [25]:
data['刘']
Out[25]:
100
(3)常用方法
In [33]:
names = ['aa','bb','cc','dd','ee']
ages = [50,42,32,65,80]
data = pd.Series(ages,names)
data
Out[33]:
aa    50
bb    42
cc    32
dd    65
ee    80
dtype: int64
In [34]:
data.sort_index()
Out[34]:
aa    50
bb    42
cc    32
dd    65
ee    80
dtype: int64
In [35]:
data.sort_index()
Out[35]:
aa    50
bb    42
cc    32
dd    65
ee    80
dtype: int64
In [36]:
data.rank()
Out[36]:
aa    3.0
bb    2.0
cc    1.0
dd    4.0
ee    5.0
dtype: float64

2.DataFrame对象

(1)定义和创建
(2)数据访问
(3)常见方法
(4)常见操作

(1)定义和创建

DataFrame可以看作是一种既有行索引,又有列索引的二维数组,类似于Excel表或关系型数据库中的二维表,是Pandas中最常用的基本结构
In [42]:
names = ['aa','bb','cc','dd','ee']
ages = [50,42,32,65,80]
gates = ['一班','二班','三班','四班','五班']
nums = [123,234,345,456,567]
data_2 = pd.DataFrame({'学号':nums,'班级':gates,'姓名':names,'年龄':ages},index = list('abcde'))
print(data_2)
data_2
    学号  班级  姓名  年龄
a  123  一班  aa  50
b  234  二班  bb  42
c  345  三班  cc  32
d  456  四班  dd  65
e  567  五班  ee  80
Out[42]:
学号班级姓名年龄
a123一班aa50
b234二班bb42
c345三班cc32
d456四班dd65
e567五班ee80
In [43]:
#(2)数据访问
names = ['aa','bb','cc','dd','ee']
ages = [50,42,32,65,80]
s_1 = pd.Series(names)
print(s_1)
print()
s_2 = pd.Series(ages)
s_2

pd.DataFrame({'姓名':names,'年龄':ages})
0    aa
1    bb
2    cc
3    dd
4    ee
dtype: object

Out[43]:
姓名年龄
0aa50
1bb42
2cc32
3dd65
4ee80
In [54]:
#data_2['姓名']
data_2.年龄
data_2['姓名'][1]    #根据行列位置访问单个数据
Out[54]:
'bb'
In [56]:
data_2['姓名']
data_2.年龄
data_2['姓名'][4]
data_2[['姓名','年龄']
data_2.loc[2,'姓名']
data_2.iloc[0:2,0:2]
data_2.年龄>40
  File "C:\Users\Administrator\AppData\Local\Temp\ipykernel_2752\328135043.py", line 7
    #data_2.年龄>40
                 ^
SyntaxError: unexpected EOF while parsing
(3)常见方法
(4)常见操作
In [57]:
#导入库
import numpy as np
import pandas as pd
In [66]:
#1
data_1 = pd.read_excel('../Stu_pack/pandas/exer_1.xlsx',skiprows = 1)
data_2 = pd.read_excel('../Stu_pack/pandas/exer_2.xlsx',skiprows = 1)
#print(data_1)
data_2
#data_3 = pd.merge(data_1,data_2)
data_3 = data_1.join(data_2.set_index('姓名'),on = '姓名')
data_3
Out[66]:
姓名性别班级语文数学英语总分
0Aa2班837898259
1Bb3班679356216
2Cc3班598686231
3Dd3班756059194
4Ee3班818179241
5Ff1班686795230
6Gg1班618075216
7Hh1班897096255
8Ii3班625590207
9Jj3班689194253
10Kk2班867751214
11Ll1班887278238
12Mm2班859159235
13Nn3班806576221
14Oo3班709668234
15Pp1班767898252
16Qq1班786867213
17Rr1班786867213
18Ss2班775190218
19Tt3班679899264
20Uu3班686778213
21Vv3班987751226
22Ww3班775189217
23Xx1班898967245
24Yy1班775156184
25Zz2班566867191
In [69]:
#2
def sort(df,col):
    ss = df.sort_values(by = col,ascending = False)
    return ss
    
col = input('请输入你要排序的列名:') 
sort(data_3,col)   
#print(data_3.sort_values(["总分"],ascending=False))
请输入你要排序的列名:语文
输出[69]:
姓名性别班级语文数学英语总分
21Vv3班987751226
23Xx1班898967245
7Hh1班897096255
11Ll1班887278238
10Kk2班867751214
12Mm2班859159235
0Aa2班837898259
4Ee3班818179241
13Nn3班806576221
17Rr1班786867213
16Qq1班786867213
18Ss2班775190218
24Yy1班775156184
22Ww3班775189217
15Pp1班767898252
3Dd3班756059194
14哎呀3班709668234
20呜呜3班686778213
9Jj(英语:Jj)3班689194253
5FF系列1班686795230
19TT的3班679899264
1BB型3班679356216
8第二3班625590207
6Gg 系列1班618075216
2抄送3班598686231
25嗤之以鼻2班566867191
在[71]中:
#3
data_3[(data_3['语文']<60) | (data_3['数学']<60) | (data_3['英语']<60)]
输出[71]:
姓名性别班级语文数学英语总分
1BB型3班679356216
2抄送3班598686231
3滴滴3班756059194
8第二3班625590207
10Kk2班867751214
12毫米2班859159235
18SS系列2班775190218
213班987751226
22Ww(英语:Ww)3班775189217
24YY1班775156184
25嗤之以鼻2班566867191
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值