Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来就很方便。如果说,在 NumPy 中数据结构是围绕 ndarray 展开的,那么在 Pandas 中就有Series 和 DataFrame 这两个核心数据结构,分别代表着一维的序列和二维的表结构。

数据结构:Series 和 DataFrame

Series 是个定长的字典序列。说是定长是因为在存储的时候,相当于两个 ndarray,这也是和字典结构最大的不同。因为在字典的结构里,元素的个数是不固定的。

Series有两个基本属性:index 和 values。在 Series 结构中,index 默认是 0,1,2……递增;然而我们也可以自己来指定索引,比如 index=[‘a’, ‘b’, ‘c’, ‘d’]。

import pandas as pd
from pandas import Series, DataFrame
x1 = Series([1,2,3,4])
x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
print x1
print x20    1
1    2
2    3
3    4
dtype: int64
a    1
b    2
c    3
d    4
dtype: int64

我们也可以采用字典的方式来创建 Series,比如:

d = {'a':1, 'b':2, 'c':3, 'd':4}
x3 = Series(d)
print x3 a    1
b    2
c    3
d    4
dtype: int64

Series 的一些特性

索引
可以通过相对位置的下标或者index来访问Series中的元素import numpy as np
import pandas as pd
obj2 = pd.Series([4,7,-5,3],index=['d','b','a','c'])
print(obj2[1])#引用一个元素一个中括号
print(obj2['b'])
print(obj2[[1,2]]) #利用下标索引时两个中括号
print(obj2['d':'a'])#切片:时一个中括号
print(obj2[['d','c']])#利用index索引时两个中括号输出
7
7
b    7
a   -5
dtype: int64
d    4
b    7
a   -5
dtype: int64
d    4
c    3
dtype: int64

重新索引

我们可以使用reindex函数对Series进行重新索引,而不是简单的改变索引的值:

obj2 = pd.Series([4,7,-5,3],index=['d','b','a','c'])
obj3 = obj2.reindex(['a','b','c','d','e']) #使用reindex时,如果新增 的索引在原数据中没有值,其对应的值就会是NA
obj3
#输出
a   -5.0
b    7.0
c    3.0
d    4.0
e    NaN
dtype: float64obj4 = obj2.reindex(['a','b','c','d','e'],fill_value=0)#可以使用fill_value进行填充
obj4
#输出
a   -5
b    7
c    3
d    4
e    0
dtype: int64

reindex函数还有一个method属性,进行差值填充,但是索引必须是单调递增或者单调递减的,所以一般用在时间序列这样的有序数据中:

# obj5 = obj2.reindex(['a','b','c','d','e'],method='ffill') 会报错
obj3 = pd.Series(['blue','Purple','yellow'],index = [0,2,4])
obj3.reindex(range(6),method='ffill')
#输出
0      blue
1      blue
2    Purple
3    Purple
4    yellow
5    yellow
dtype: object

数据运算

可以对Series进行numpy中的一些数组运算(如根据布尔型数据进行过滤,标量乘法、应用数学函数等),这些都会保留索引和值之间的链接:

np.exp(obj2) #numpy中的数学函数作用到pandas的Series
#输出
d      54.598150
b    1096.633158
a       0.006738
c      20.085537
dtype: float64

Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据:

obj4=obj2.reindex(range(6),fill_value=0)
print(obj2+obj4)输出
d   NaN
b   NaN
a   NaN
c   NaN
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
5   NaN
dtype: float64

Series排序

Series是一维序列,按照index和values进行排序。

numpy中的ndarray多维数组排序则比较灵活;将数据看作矩阵,axis=0(按照列进行排序),axis=1(按照行排序),axis=none打通格式将矩阵看作向量进行全排,axis=-1为默认,实际上与axis=1(按照行排序)

#按照index排序
obj = pd.Series(range(4),index=['d','a','b','c'])
obj.sort_index()
#输出:
a    1
b    2
c    3
d    0
dtype: int64#按照values排序
obj.sort_values()
#输出:
d    0
a    1
b    2
c    3
dtype: int64numpy中的ndarray排序
a = np.array([[4,3,2],[2,4,1]])
print np.sort(a)
print np.sort(a, axis=None)
print np.sort(a, axis=0)
print np.sort(a, axis=1)  [[2 3 4][1 2 4]]
[1 2 2 3 4 4]
[[2 3 1][4 4 2]]
[[2 3 4][1 2 4]]

统计相关

Series中的实现了sum、mean、max等方法,这里就不详细介绍了,我们主要介绍求协方差和相关系数的方法:corr方法用于计算相关系数,cov计算协方差;

ndarray中统计函数比较灵活,结合维度axis进行处理。(不归纳研究一下很难一下子就看明白)

obj1 = pd.Series(np.arange(10),index = list('abcdefghij'))
obj2 = pd.Series(np.arange(12),index = list('cdefghijklmn'))
obj1.corr(obj2)
#1.0
obj1.cov(obj2)
#6.0#ndarray
import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.amin(a)
print np.amin(a,0)
print np.amin(a,1)
print np.amax(a)
print np.amax(a,0)
print np.amax(a,1)1
[1 4 7]
[1 2 3]
9
[7 8 9]
[3 6 9]

对于一个二维数组 a,amin(a) 指的是数组中全部元素的最小值,amin(a,0) 是延着 axis=0 轴的最小值---axis=0 轴是把元素看成了[1,4,7], [2,5,8], [3,6,9] 三个元素;所以最小值为 [1,4,7],amin(a,1) 是延着 axis=1 轴的最小值---axis=1 轴是把元素看成了 [1,2,3], [4,5,6], [7,8,9]三个元素;所以最小值为 [1,2,3]。同理 amax() 是计算数组中元素沿指定轴的最大值。

唯一数、值计数

unique返回没有排序的唯一值数组,value_counts()返回各数的计数

obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
uniques = obj.unique()
uniques
#array(['c', 'a', 'd', 'b'], dtype=object)#value_counts()返回各数的计数
obj.value_counts()
#输出
a    3
c    3
b    2
d    1
dtype: int64

DataFrame

类型数据结构类似数据库表,它包括了行索引和列索引,我们可以将 DataFrame 看成是由相同索引的 Series 组成的字典类型。

ndarray在构建二维表结构时,一条语句写列名与格式,一条语句写行名,填充具体数据。

而DateFrame在创建二维表结构时,列名,填充具体数据一起完成(列索引),行名(行索引)。

在后面的案例中,我一般会用 df, df1, df2 这些作为 DataFrame 数据类型的变量名,我们以例子中的 df2 为例,列索引是 [‘English’, ‘Math’, ‘Chinese’],行索引是 [‘ZhangFei’,GuanYu’, ‘ZhaoYun’, ‘HuangZhon..]所以 df2 的输出是:

import pandas as pd
from pandas import Series, DataFrame
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1= DataFrame(data)
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
print df1
print df2English  Math  Chinese
ZhangFei         65    30       66
GuanYu           85    98       95
ZhaoYun          92    96       93
HuangZhong       88    77       90
DianWei          90    90       80##########实用ndarray创建二维表结构
import numpy as np
import pandas as pd
persontype = np.dtype({'names':['name', 'age', 'chinese', 'math', 'english'],'formats':['S32','i', 'i', 'i', 'f']})
peoples = np.array([("ZhangFei",32,75,100, 90),("GuanYu",24,85,96,88.5),("ZhaoYun",28,85,92,96.5),("HuangZhong",29,65,85,100)],dtype=persontype)

数据导入和输出:

Pandas 允许直接从 xlsx,csv 等文件中导入数据,也可以输出到 xlsx, csv 等文件

import pandas as pd
from pandas import Series, DataFrame
score = DataFrame(pd.read_excel('data.xlsx'))
score.to_excel('data1.xlsx')
print scorefor windows
import pandas as pd
from pandas import Series,DataFrame
score =DataFrame(pd.read_excel('C:/Users/baihua/Desktop/123.xlsx'))
score.to_excel('C:/Users/baihua/Desktop/111.xlsx')
print (score)Anaconda好用之处就体现出来了,不需要下载,因为这些包已经安装了,直接调用
读取桌面上的123.xlsx文件
并将文件转化为111.xlsx存储

需要说明的是,在运行的过程可能会存在缺少 xlrd 和 openpyxl 包的情况,可以通过python脚本中的pip install xird(pip也要自己安装),也可以用conda终端anaconda prompt中进行安装:conda install xird;(mac输入终端即可输入命令,windows把anaconda prompt叫做终端)。

点这里教你如何安装anaconda

点这里教你安装Jupyter notebook

DataFrame一些性质

索引、切片

import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(16).reshape((4,4)),index = ['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four'])
print(data[:2])#取第0,1行
print('-'*30)
print(data[2:])#从第2行开始取
print('-'*30)
print(data[['one','two']]) #取对应的列
print('-'*30)
print(data.loc[['Ohio','Colorado'],['one','two']])#切片灵活取数,如果是标签要加loc函数
print('-'*30)
print(data.iloc[[1,2],[2,3]])#切片灵活取数,如果是数字下标要加iloc函数输出one  two  three  four
Ohio        0    1      2     3
Colorado    4    5      6     7
------------------------------one  two  three  four
Utah        8    9     10    11
New York   12   13     14    15
------------------------------one  two
Ohio        0    1
Colorado    4    5
Utah        8    9
New York   12   13
------------------------------one  two
Ohio        0    1
Colorado    4    5
------------------------------three  four
Colorado      6     7
Utah         10    11

修改数据

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]
}
frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt']) #可以通过columns指定列名
frame2['debt']=16.5 #重新给列赋值
print(frame2)
print('-'*30)
frame2['debt']=np.arange(5)#可以使用一个列表来修改DataFrame
print(frame2)
print('-'*30)
val = pd.Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt'] = val #可以使用一个Series,此时会根据索引进行精确匹配
print(frame2)输出year   state  pop  debt
one    2000    Ohio  1.5  16.5
two    2001    Ohio  1.7  16.5
three  2002    Ohio  3.6  16.5
four   2001  Nevada  2.4  16.5
five   2002  Nevada  2.9  16.5
------------------------------year   state  pop  debt
one    2000    Ohio  1.5     0
two    2001    Ohio  1.7     1
three  2002    Ohio  3.6     2
four   2001  Nevada  2.4     3
five   2002  Nevada  2.9     4
------------------------------year   state  pop  debt
one    2000    Ohio  1.5   NaN
two    2001    Ohio  1.7  -1.2
three  2002    Ohio  3.6   NaN
four   2001  Nevada  2.4  -1.5
five   2002  Nevada  2.9  -1.7

重新索引

使用reindex方法对DataFrame进行重新索引。对DataFrame进行重新索引,可以重新索引行,列或者两个都修改,如果只传入一个参数,则会从新索引行:

frame = pd.DataFrame(np.arange(9).reshape((3,3)),index=[1,4,5],columns=['Ohio','Texas','California'])
frame2 = frame.reindex(index=[1,2,4,5]) #没匹配上则为Na
frame2
#输出Ohio Texas   California
1   0.0 1.0 2.0
2   NaN NaN NaN
4   3.0 4.0 5.0
5   6.0 7.0 8.0states = ['Texas','Utah','California']
frame.reindex(columns=states)
#输出Texas   Utah    California
1   1   NaN 2
4   4   NaN 5
5   7   NaN 8填充数据只能按行填充,此时只能对行进行重新索引:
frame = pd.DataFrame(np.arange(9).reshape((3,3)),index = ['a','c','d'],columns = ['Ohio','Texas','California'])
frame.reindex(['a','b','c','d'],method = 'bfill')
#frame.reindex(['a','b','c','d'],method = 'bfill',columns=states) 报错输出
Ohio    Texas   California
a   0   1   2
b   3   4   5
c   3   4   5
d   6   7   8

更多内容参考:https://blog.csdn.net/youngbit007/article/details/53067707

函数应用和映射

numpy的元素级数组方法,也可以用于操作Pandas对象:

frame = pd.DataFrame(np.random.randn(3,3),columns=list('bcd'),index=['Ohio','Texas','Colorado'])
np.abs(frame)
#输出b   c   d
Ohio    0.367521    0.232387    0.649330
Texas   3.115632    1.415106    2.093794
Colorado    0.714983    1.420871    0.557722另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。
frame = pd.DataFrame(np.random.randn(3,3),columns=list('bcd'),index=['Ohio','Texas','Colorado'])
print(frame)
f = lambda x:x.max() - x.min()
print(frame.apply(f)) #默认axis=0,按照列
print(frame.apply(f,axis=1))#axis=1,按照行输出b         c         d
Ohio     -0.158839 -0.355414  1.025148
Texas     1.191782 -0.257831 -0.973115
Colorado  0.078078 -2.958166  0.331047
b    1.350621
c    2.700335
d    1.998263
dtype: float64
Ohio        1.380562
Texas       2.164897
Colorado    3.289213
dtype: float64

排序

DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序:

frame = pd.DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],columns=['d','a','b','c'])
print(frame)
print('-'*30)
print(frame.sort_index(0,))#按照行index顺序
print('-'*30)
print(frame.sort_index(1,ascending=False)) #按照列index顺序·,#默认升序,降序可在括号加ascending=False
print('-'*30)
print(frame.sort_index(by=['a','b']))#按照指定列排序
print('-'*30)
print(frame.sort_values(by=['a','b'])) d  a  b  c
three  0  1  2  3
one    4  5  6  7
------------------------------d  a  b  c
one    4  5  6  7
three  0  1  2  3
------------------------------d  a  b  c
three  0  1  2  3
one    4  5  6  7
------------------------------d  c  b  a
three  0  3  2  1
one    4  7  6  5
------------------------------d  a  b  c
three  0  1  2  3
one    4  5  6  7
------------------------------d  a  b  c
three  0  1  2  3
one    4  5  6  7

汇总和计算描述统计

DataFrame中的实现了sum、mean、max等方法,我们可以指定进行汇总统计的轴,同时,也可以使用describe函数查看基本所有的统计项:

df = pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=['a','b','c','d'],columns=['one','two'])
#输出one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3df.sum(axis=0) #按列,Na默认不会被计算
#输出
one    9.25
two   -5.80
dtype: float64#Na会被自动排除,可以使用skipna选项来禁用该功能
df.mean(axis=1,skipna=False)#按行,有Na项不参与计算
#输出
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64#idxmax返回间接统计,是达到最大值的索引
df.idxmax()
#输出
one    b
two    d
dtype: object#describe返回的是DataFrame的汇总统计
#非数值型的与数值型的统计返回结果不同
df.describe()
#输出
one two
count   3.000000    2.000000
mean    3.083333    -2.900000
std 3.493685    2.262742
min 0.750000    -4.500000
25% 1.075000    -3.700000
50% 1.400000    -2.900000
75% 4.250000    -2.100000
max 7.100000    -1.300000

DataFrame也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方差矩阵,同时DataFrame也可以与Series求解相关系数。

Series有corr,cov计算相关系数与协方差;DataFrame同样可以

相关系数通常指两个随机变量之间,多个变量之间的相关系数称为复相关系数。

协方差是与相关系数一起使用的,协方差>0,表示两个随机变量之间有正向相关关系,=0,表示两个变量之间不相关;<0,表示负相关

frame1 = pd.DataFrame(np.random.randn(3,3),index=list('abc'),columns=list('abc'))
frame1.corr
#输出
<bound method DataFrame.corr of           a         b         c
a  1.253773  0.429059  1.535575
b -0.113987 -2.837396 -0.894469
c -0.548208  0.834003  0.994863>frame1.cov()
#输出
a   b   c
a   0.884409    0.357304    0.579613
b   0.357304    4.052147    2.442527
c   0.579613    2.442527    1.627843#corrwith用于计算每一列与Series的相关系数
frame1.corrwith(frame1['a'])
#输出
a    1.000000
b    0.188742
c    0.483065
dtype: float64

数据清洗

import numpy as np
import pandas as pd
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])English  Math  Chinese
ZhangFei         65    30       66
GuanYu           85    98       95
ZhaoYun          92    96       93
HuangZhong       88    77       90
DianWei          90    90       80

1. 删除 DataFrame 中的不必要的列或行

比如我们想把“语文”这列删掉。

df2 = df2.drop(columns=['Chinese'])

想把“张飞”这行删掉。

df2.drop(index='ZhangFei')

2. 重命名列名 columns,让列表名更容易识别

df2.rename(columns={'Chinese': 'YuWen', 'English': 'Yingyu'}, inplace = True)

3. 去重复的值

df = df.drop_duplicates() # 去除重复行

4. 格式问题更改数据格式

比如我们把 Chinese 字段的值改成 str 类型,或者 int64 可以这么写:

df2['Chinese'].astype('str')
df2['Chinese'].astype(np.int64)

5. 数据间的空格

这时想要删除数据间的空格,我们就可以使用 strip 函数:

# 删除左右两边空格
df2['Chinese']=df2['Chinese'].map(str.strip)
# 删除左边空格
df2['Chinese']=df2['Chinese'].map(str.lstrip)
# 删除右边空格
df2['Chinese']=df2['Chinese'].map(str.rstrip)

删除特殊符号:比如 Chinese 字段里有美元符号,我们想把这个删掉,可以这么写:

df2['Chinese']=df2['Chinese'].str.strip('$')

6.大小写转换

在 Python 里直接使用 upper(), lower(), title() 函数,方法如下:

# 全部大写
df2.columns = df2.columns.str.upper()
# 全部小写
df2.columns = df2.columns.str.lower()
# 首字母大写
df2.columns = df2.columns.str.title()

7.查找空值

使用 Pandas 中的 isnull 函数进行查找。比如,我们输入一个数据表如下

以针对数据表 df 进行 df.isnull()

如果我想知道哪列存在空值,可以使用 df.isnull().any()

使用 apply 函数对数据进行清洗

比如我们想对 name 列的数值都进行大写转化可以用:

df['name'] = df['name'].apply(str.upper)

我们也可以定义个函数,在 apply 中进行使用。比如定义 double_df 函数是将原来的数值 *2 进行返回。然后对 df1 中的“语文”列的数值进行 *2 处理,可以写成:

def double_df(x):return 2*x
df1[u'语文'] = df1[u'语文'].apply(double_df)

也可以这样用:

def plus(df,n,m):df['new1'] = (df[u'语文']+df[u'英语']) * mdf['new2'] = (df[u'语文']+df[u'英语']) * nreturn df
df1 = df1.apply(plus,axis=1,args=(2,3,))

axis=0 是列运算;axis=1 是行运算。args 是传递的两个参数,即 n=2, m=3;在 plus 函数中使用到了 n 和 m,从而生成新的 df。

数据统计

Pandas 和 NumPy 一样,都有常用的统计函数,如果遇到空值 NaN,会自动排除。

表格中有一个 describe() 函数,统计函数千千万,describe() 函数最简便

df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
print df1.describe()

数据表合并

比如我要创建两个 DataFrame:

df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
df2 = DataFrame({'name':['ZhangFei', 'GuanYu', 'A', 'B', 'C'], 'data2':range(5)})

1. 基于指定列进行连接比如我们可以基于 name 这列进行连接。

df3 = pd.merge(df1, df2, on='name')

2. inner 内连接

inner 内链接是 merge 合并的默认情况,inner 内连接其实也就是键的交集在这里 df1, df2 相同的键是 name,所以是基于 name 字段做的连接:

df3 = pd.merge(df1, df2, how='inner')

3. left 左连接

df3 = pd.merge(df1, df2, how='left')

如何用 SQL 方式打开 Pandas

这里给你介绍个工具:pandasql。

pandasql 中的主要函数是 sqldf,它接收两个参数:一个 SQL 查询语句,还有一组环境变量 globals() 或 locals()。这样我们就可以在 Python 里直接用 SQL 语句中对 DataFrame 进行操作,举个例子:

import pandas as pd
from pandas import DataFrame
from pandasql import sqldf, load_meat, load_births
df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
pysqldf = lambda sql: sqldf(sql, globals())
sql = "select * from df1 where name ='ZhangFei'"
print pysqldf(sql)

当然你会看到我们用到了 lambda,lambda 在 python 中算是使用频率很高的,那 lambda 是用来做什么的呢?它实际上是用来定义一个匿名函数的具体的使用形式为:

 lambda argument_list: expression
pysqldf = lambda sql: sqldf(sql, globals())

在这个例子里,输入的参数是 sql,返回的结果是 sqldf 对 sql 的运行结果,当然 sqldf 中也输入了 globals 全局参数,因为在 sql 中有对全局参数  df1 的使用。

练习题

对于下表的数据,请使用 Pandas 中的 DataFrame 进行创建,并对数据进行清洗。同时新增一列“总和”计算每个人的三科成绩之和。

import numpy as np
import pandas as pd
data = {'Chinese': [None, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df2 = pd.DataFrame(data,index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
df2=df2.reindex(index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei','CaoCao'])
print (df2)
print('--'*20)
df2[['English','Math']].fillna(df2[['English','Math']].mean(),inplace=True)#成None
df2['English'].fillna(df2['English'].mean(),inplace=True)#一次只能改一个
df2['Math'].fillna(df2['Math'].mean(),inplace=True)#一次只能改一个
df2['Chinese'].fillna(df2['Chinese'].mean(),inplace=True)
print(df2)
df2['total']=df2['English']+df2['Math']+df2['Chinese']
print('三科总成绩:',df2)
print('--'*20)
print(df2.describe())
print('--'*20)
def total_score(df2):df2['total']=df2['English']+df2['Math']+df2['Chinese']return df2
df2.apply(total_score,axis=1)#apply(函数名,维度,args=参数)
df2.sort_values('total',ascending=False,inplace=True)
print('三科总成绩:',df2)
结果English  Math  Chinese
ZhangFei       65.0  30.0      NaN
GuanYu         85.0  98.0     95.0
ZhaoYun        92.0  96.0     93.0
HuangZhong     88.0  77.0     90.0
DianWei        90.0  90.0     80.0
CaoCao          NaN   NaN      NaN
----------------------------------------English  Math  Chinese
ZhangFei       65.0  30.0     89.5
GuanYu         85.0  98.0     95.0
ZhaoYun        92.0  96.0     93.0
HuangZhong     88.0  77.0     90.0
DianWei        90.0  90.0     80.0
CaoCao         84.0  78.2     89.5
三科总成绩:             English  Math  Chinese  total
ZhangFei       65.0  30.0     89.5  184.5
GuanYu         85.0  98.0     95.0  278.0
ZhaoYun        92.0  96.0     93.0  281.0
HuangZhong     88.0  77.0     90.0  255.0
DianWei        90.0  90.0     80.0  260.0
CaoCao         84.0  78.2     89.5  251.7
----------------------------------------English       Math    Chinese       total
count   6.000000   6.000000   6.000000    6.000000
mean   84.000000  78.200000  89.500000  251.700000
std     9.777525  25.190474   5.157519   35.059378
min    65.000000  30.000000  80.000000  184.500000
25%    84.250000  77.300000  89.500000  252.525000
50%    86.500000  84.100000  89.750000  257.500000
75%    89.500000  94.500000  92.250000  273.500000
max    92.000000  98.000000  95.000000  281.000000
----------------------------------------
三科总成绩:             English  Math  Chinese  total
ZhaoYun        92.0  96.0     93.0  281.0
GuanYu         85.0  98.0     95.0  278.0
DianWei        90.0  90.0     80.0  260.0
HuangZhong     88.0  77.0     90.0  255.0
CaoCao         84.0  78.2     89.5  251.7
ZhangFei       65.0  30.0     89.5  184.5

参考文献:

python中DataFrame灵活取数

pandas中reindex用法

Python科学计算:Pandas相关推荐

  1. Python科学计算之Pandas基础学习

    Python科学计算之Pandas基础学习 导入Pandas 我们首先要导入我们的演出明星--Pandas. 这是导入Pandas的标准方式.显然,我们不希望每时每刻都在程序中写'pandas',但是 ...

  2. AI算法工程师 | 03人工智能基础-Python科学计算和可视化(三)Pandas

    文章目录 Python 之 数据处理分析模块 Pandas 一.Pandas 开发环境搭建 二.Pandas 数据类型 1. Series 对象创建 2. DataFrame 对象创建 3. 获取 S ...

  3. 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)

    无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...

  4. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书

    因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...

  5. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  6. python科学计算基础教程pdf下载-Python科学计算 PDF 第2版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.科学计算方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.5 MB,张若愚编写,目前豆瓣.亚马逊.当当.京东 ...

  7. python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载

    相关截图: 资料简介: 本书详细介绍Python科学计算中最常用的扩展库NumPy.SciPy.matplotlib.Pandas.SymPy.TTK.Mayavi.OpenCV.Cython,涉及数 ...

  8. python 科学计算基础教程电子版-Python 科学计算基础 (整理)

    Python是一种面向对象的.动态的程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合于完成各种高层任务. 随着NumPy.SciPy.matpl ...

  9. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  10. python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy

    数据分析三剑客 numpy pandas(重点) matplotlib numpy模块 NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库.侧重在于数值计算,也 ...

最新文章

  1. .NET Core 2.1改进了性能,并提供了新的部署选项
  2. 狼的故事16:空有强壮的身体
  3. NVIDIA团队:利用神经网络生成极慢视频
  4. python【数据结构与算法】二分模板
  5. python是c语言写的吗-Python与C语言有什么区别?
  6. Java学习之JDBC实现简单的CRUD(mysql数据库)
  7. yolov5的flask部署python调用
  8. nginx启用https访问
  9. 如何用python和flask以太坊智能合约开发
  10. css3 rem的用法
  11. window.location
  12. C语言中类型转换那些事儿
  13. 两样本非参数统计常用方法对比 R语言实现
  14. 人体姿态识别研究综述(详细归纳!)
  15. c语言sinx的幂级数展开式,sinx的幂级数展开式问题?
  16. 5G NR PUSCH non-codebook SRS/DMRS
  17. 大创笔记——硬切法实现基于单片机的人机交互系统
  18. 接口测试, 功能测试(黑盒测试)
  19. php 泊松分布,关于检验泊松分布
  20. 3d场景渲染插件MultiScatter 1.623

热门文章

  1. Java 核心编程技术干货
  2. c语言版票务管理系统,火车票务管理系统(C语言版)【TXT文件,改后缀即可】
  3. 电脑pin码忘了登录不进系统_想要大屏打王者,家里电视用不了?投屏到电脑试试...
  4. Keil C51软件的使用教程
  5. java j2se1.5_用J2SE1.5建立多任务的Java应用程序...
  6. jmeter 获取全部响应_Jmeter获取响应结果中参数出现的次数
  7. ae导出json_关于AE转json动画开发避坑指南
  8. access数据类型百度百科_Day 7 基本数据类型
  9. left join 索引失效无条件_技术分享 | MySQL 优化:JOIN 优化实践
  10. c#求三角形面积周长公式_此题求三角形的面积,多数学生完全没思路,解题关键是用该知识点...