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]:
学号 | 班级 | 姓名 | 年龄 | |
---|---|---|---|---|
a | 123 | 一班 | aa | 50 |
b | 234 | 二班 | bb | 42 |
c | 345 | 三班 | cc | 32 |
d | 456 | 四班 | dd | 65 |
e | 567 | 五班 | ee | 80 |
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]:
姓名 | 年龄 | |
---|---|---|
0 | aa | 50 |
1 | bb | 42 |
2 | cc | 32 |
3 | dd | 65 |
4 | ee | 80 |
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]:
姓名 | 性别 | 班级 | 语文 | 数学 | 英语 | 总分 | |
---|---|---|---|---|---|---|---|
0 | Aa | 男 | 2班 | 83 | 78 | 98 | 259 |
1 | Bb | 男 | 3班 | 67 | 93 | 56 | 216 |
2 | Cc | 女 | 3班 | 59 | 86 | 86 | 231 |
3 | Dd | 男 | 3班 | 75 | 60 | 59 | 194 |
4 | Ee | 女 | 3班 | 81 | 81 | 79 | 241 |
5 | Ff | 女 | 1班 | 68 | 67 | 95 | 230 |
6 | Gg | 女 | 1班 | 61 | 80 | 75 | 216 |
7 | Hh | 女 | 1班 | 89 | 70 | 96 | 255 |
8 | Ii | 女 | 3班 | 62 | 55 | 90 | 207 |
9 | Jj | 男 | 3班 | 68 | 91 | 94 | 253 |
10 | Kk | 女 | 2班 | 86 | 77 | 51 | 214 |
11 | Ll | 男 | 1班 | 88 | 72 | 78 | 238 |
12 | Mm | 男 | 2班 | 85 | 91 | 59 | 235 |
13 | Nn | 男 | 3班 | 80 | 65 | 76 | 221 |
14 | Oo | 女 | 3班 | 70 | 96 | 68 | 234 |
15 | Pp | 男 | 1班 | 76 | 78 | 98 | 252 |
16 | 女 | 1班 | 78 | 68 | 67 | 213 | |
17 | Rr | 女 | 1班 | 78 | 68 | 67 | 213 |
18 | Ss | 女 | 2班 | 77 | 51 | 90 | 218 |
19 | Tt | 男 | 3班 | 67 | 98 | 99 | 264 |
20 | Uu | 女 | 3班 | 68 | 67 | 78 | 213 |
21 | Vv | 女 | 3班 | 98 | 77 | 51 | 226 |
22 | Ww | 女 | 3班 | 77 | 51 | 89 | 217 |
23 | Xx | 男 | 1班 | 89 | 89 | 67 | 245 |
24 | Yy | 女 | 1班 | 77 | 51 | 56 | 184 |
25 | Zz | 男 | 2班 | 56 | 68 | 67 | 191 |
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]:
姓名 | 性别 | 班级 | 语文 | 数学 | 英语 | 总分 | |
---|---|---|---|---|---|---|---|
21 | Vv | 女 | 3班 | 98 | 77 | 51 | 226 |
23 | Xx | 男 | 1班 | 89 | 89 | 67 | 245 |
7 | Hh | 女 | 1班 | 89 | 70 | 96 | 255 |
11 | Ll | 男 | 1班 | 88 | 72 | 78 | 238 |
10 | Kk | 女 | 2班 | 86 | 77 | 51 | 214 |
12 | Mm | 男 | 2班 | 85 | 91 | 59 | 235 |
0 | Aa | 男 | 2班 | 83 | 78 | 98 | 259 |
4 | Ee | 女 | 3班 | 81 | 81 | 79 | 241 |
13 | Nn | 男 | 3班 | 80 | 65 | 76 | 221 |
17 | Rr | 女 | 1班 | 78 | 68 | 67 | 213 |
16 | 女 | 1班 | 78 | 68 | 67 | 213 | |
18 | Ss | 女 | 2班 | 77 | 51 | 90 | 218 |
24 | Yy | 女 | 1班 | 77 | 51 | 56 | 184 |
22 | Ww | 女 | 3班 | 77 | 51 | 89 | 217 |
15 | Pp | 男 | 1班 | 76 | 78 | 98 | 252 |
3 | Dd | 男 | 3班 | 75 | 60 | 59 | 194 |
14 | 哎呀 | 女 | 3班 | 70 | 96 | 68 | 234 |
20 | 呜呜 | 女 | 3班 | 68 | 67 | 78 | 213 |
9 | Jj(英语:Jj) | 男 | 3班 | 68 | 91 | 94 | 253 |
5 | FF系列 | 女 | 1班 | 68 | 67 | 95 | 230 |
19 | TT的 | 男 | 3班 | 67 | 98 | 99 | 264 |
1 | BB型 | 男 | 3班 | 67 | 93 | 56 | 216 |
8 | 第二 | 女 | 3班 | 62 | 55 | 90 | 207 |
6 | Gg 系列 | 女 | 1班 | 61 | 80 | 75 | 216 |
2 | 抄送 | 女 | 3班 | 59 | 86 | 86 | 231 |
25 | 嗤之以鼻 | 男 | 2班 | 56 | 68 | 67 | 191 |
在[71]中:
#3
data_3[(data_3['语文']<60) | (data_3['数学']<60) | (data_3['英语']<60)]
输出[71]:
姓名 | 性别 | 班级 | 语文 | 数学 | 英语 | 总分 | |
---|---|---|---|---|---|---|---|
1 | BB型 | 男 | 3班 | 67 | 93 | 56 | 216 |
2 | 抄送 | 女 | 3班 | 59 | 86 | 86 | 231 |
3 | 滴滴 | 男 | 3班 | 75 | 60 | 59 | 194 |
8 | 第二 | 女 | 3班 | 62 | 55 | 90 | 207 |
10 | Kk | 女 | 2班 | 86 | 77 | 51 | 214 |
12 | 毫米 | 男 | 2班 | 85 | 91 | 59 | 235 |
18 | SS系列 | 女 | 2班 | 77 | 51 | 90 | 218 |
21 | 节 | 女 | 3班 | 98 | 77 | 51 | 226 |
22 | Ww(英语:Ww) | 女 | 3班 | 77 | 51 | 89 | 217 |
24 | YY | 女 | 1班 | 77 | 51 | 56 | 184 |
25 | 嗤之以鼻 | 男 | 2班 | 56 | 68 | 67 | 191 |