DataFrame.sum(axis=None,skipna=None,level=None,numeric_only=None,min_count=0,**kwargs)
NaN表示非数值。在进行数据处理、数据计算时,Pandas会为缺少的值自动分配NaN值。
import pandas as pd
data = [[110,105,99],[105,88,115],[109,120,130]]
index = [1,2,3]
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
df
df['总成绩']=df.sum(axis=1)
df
DataFrame.mean(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)
import pandas as pd
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
index = [1,2,3,4]
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
df
new=df.mean()
#增加一行数据(语文、数学和英语的平均值,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.max(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)
new=df.max()
#增加一行数据(语文、数学和英语的最大值,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.min(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)
new=df.min()
#增加一行数据(语文、数学和英语的最小值,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.median(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)
import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,columns=columns)
new=df.median()
#增加一行数据(语文、数学和英语的中位数,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.mode(axis=0,numeric_only=False,dropna=True)
import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,columns=columns)
df
new=df.mode() #计算三科成绩的众数
#df.mode(axis=1) #每一行的众数
#df['数学'].mode() #“数学”的众数
#增加一行数据(语文、数学和英语的中位数,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.var(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)
import pandas as pd
import numpy as np
data = [[110,113,102,105,108],[118,98,119,85,118]]
index=['小黑','小白']
columns = ['物理1','物理2','物理3','物理4','物理5']
df = pd.DataFrame(data=data,index=index,columns=columns)
df.var(axis=1)
DataFrame.std(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)
import pandas as pd
import numpy as np
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,columns=columns)
new = df.std()
#增加一行数据(语文、数学和英语的标准差,忽略索引)
df=df.append(new,ignore_index=True)
df
DataFrame.quantile(q=0.5,axis=0,numeric_only=True,interpolation='linear')
import pandas as pd
#创建DataFrame数据(数学成绩)
data = [120,89,98,78,65,102,112,56,79,45]
columns = ['数学']
df = pd.DataFrame(data=data,columns=columns)
#计算35%的分位数
x=df['数学'].quantile(0.35)
#输出淘汰学生
df[df['数学']<=x]
import pandas as pd
df = pd.DataFrame({'A': [1, 2],
'B': [pd.Timestamp('2019'),
pd.Timestamp('2020')],
'C': [pd.Timedelta('1 days'),
pd.Timedelta('2 days')]})
print(df.quantile(0.5, numeric_only=False))
DataFrame.round(decimals=0,*args,**kwargs)
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random([5, 5]),
columns=['A1', 'A2', 'A3','A4','A5'])
df
df.loc[:,'A1':'A3']=df.round(2)#将A1至A3列保留小数点后两位
df
df.round({'A1': 1, 'A3': 2}) #A1列保留小数点后一位、A3列保留小数点后两位
s1 = pd.Series([1, 0, 2], index=['A1', 'A2', 'A3']) #A1保留1位小数,A2列保留0位小数,A3列保留2位小数。
df.round(s1) #设置Series对象小数位数
df.applymap(lambda x: '%.2f'%x) #通过自定义函数设置小数位数,返回类型为object
经过自定义函数处理过的数据将不再是浮点型而是对象型,如果后续计算需要数据,则应先进行数据类型转换。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random([5, 5]),
columns=['A1', 'A2', 'A3','A4','A5'])
df['百分比']=df['A1'].apply(lambda x: format(x,'.0%')) #整列保留0位小数
print(df)
df['百分比']=df['A1'].apply(lambda x: format(x,'.2%')) #整列保留两位小数
print(df)
df['百分比']=df['A1'].map(lambda x:'{:.0%}'.format(x)) #整列保留0位小数,也可以使用map函数
print(df)
import pandas as pd
data = [['零基础学Python','1月',49768889],['零基础学Python','2月',11777775],['零基础学Python','3月',13799990]]
columns = ['图书','月份','码洋']
df = pd.DataFrame(data=data, columns=columns)
df['码洋']=df['码洋'].apply(lambda x:format(int(x),','))
print(df)
设置千位分隔符后,对于程序来说,这些数据将不再是数值型,而是数字和逗号组成的字符串,如果由于程序需要再变成数值型就会很麻烦,因此设置千位分隔符要慎重。
DataFrame.group(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False)
import pandas as pd #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
df
#抽取数据
df1=df[['一级分类','7天点击量','订单预定']]
df1
df1=df1.groupby('一级分类').sum() #分组统计求和
df1
#抽取数据
df1=df[['一级分类','二级分类','7天点击量','订单预定']]
df1
df2=df1.groupby(['一级分类','二级分类']).sum() #分组统计求和
df2
#抽取数据
df1=df[['二级分类','7天点击量']]
df1
df1=df1.groupby('二级分类')['7天点击量'].sum()
df1
import pandas as pd #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
#抽取数据
df1=df[['一级分类','7天点击量','订单预定']]
df1
for name, group in df1.groupby('一级分类'):
print(name)
print(group)
数据库
一级分类 7天点击量 订单预定
25 数据库 58 2
27 数据库 128 13
移动开发
一级分类 7天点击量 订单预定
10 移动开发 85 4
19 移动开发 32 1
24 移动开发 85 2
28 移动开发 59 0
编程语言与程序设计
一级分类 7天点击量 订单预定
0 编程语言与程序设计 35 1
1 编程语言与程序设计 49 0
2 编程语言与程序设计 51 2
3 编程语言与程序设计 64 1
4 编程语言与程序设计 26 0
5 编程语言与程序设计 60 1
6 编程语言与程序设计 227 11
8 编程语言与程序设计 122 3
9 编程语言与程序设计 111 5
11 编程语言与程序设计 165 5
12 编程语言与程序设计 131 1
13 编程语言与程序设计 149 10
15 编程语言与程序设计 1139 79
16 编程语言与程序设计 125 1
18 编程语言与程序设计 149 4
20 编程语言与程序设计 52 1
21 编程语言与程序设计 597 25
22 编程语言与程序设计 474 15
23 编程语言与程序设计 83 3
26 编程语言与程序设计 132 8
29 编程语言与程序设计 27 2
30 编程语言与程序设计 239 13
31 编程语言与程序设计 45 1
32 编程语言与程序设计 28 0
网页制作/Web技术
一级分类 7天点击量 订单预定
7 网页制作/Web技术 100 7
14 网页制作/Web技术 188 8
17 网页制作/Web技术 57 0
import pandas as pd #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
#抽取数据
df2=df[['一级分类','二级分类','7天点击量','订单预定']]
df2
for (key1,key2), group in df2.groupby(['一级分类','二级分类']):
print(key1,key2)
print(group)
数据库 Oracle
一级分类 二级分类 7天点击量 订单预定
25 数据库 Oracle 58 2
数据库 SQL
一级分类 二级分类 7天点击量 订单预定
27 数据库 SQL 128 13
移动开发 Android
一级分类 二级分类 7天点击量 订单预定
10 移动开发 Android 85 4
19 移动开发 Android 32 1
24 移动开发 Android 85 2
28 移动开发 Android 59 0
编程语言与程序设计 ASP.NET
一级分类 二级分类 7天点击量 订单预定
0 编程语言与程序设计 ASP.NET 35 1
20 编程语言与程序设计 ASP.NET 52 1
编程语言与程序设计 C#
一级分类 二级分类 7天点击量 订单预定
5 编程语言与程序设计 C# 60 1
8 编程语言与程序设计 C# 122 3
26 编程语言与程序设计 C# 132 8
编程语言与程序设计 C++/C语言
一级分类 二级分类 7天点击量 订单预定
6 编程语言与程序设计 C++/C语言 227 11
9 编程语言与程序设计 C++/C语言 111 5
11 编程语言与程序设计 C++/C语言 165 5
18 编程语言与程序设计 C++/C语言 149 4
29 编程语言与程序设计 C++/C语言 27 2
31 编程语言与程序设计 C++/C语言 45 1
编程语言与程序设计 JSP/JavaWeb
一级分类 二级分类 7天点击量 订单预定
4 编程语言与程序设计 JSP/JavaWeb 26 0
12 编程语言与程序设计 JSP/JavaWeb 131 1
编程语言与程序设计 Java
一级分类 二级分类 7天点击量 订单预定
2 编程语言与程序设计 Java 51 2
13 编程语言与程序设计 Java 149 10
16 编程语言与程序设计 Java 125 1
23 编程语言与程序设计 Java 83 3
编程语言与程序设计 PHP
一级分类 二级分类 7天点击量 订单预定
1 编程语言与程序设计 PHP 49 0
3 编程语言与程序设计 PHP 64 1
编程语言与程序设计 Python
一级分类 二级分类 7天点击量 订单预定
15 编程语言与程序设计 Python 1139 79
21 编程语言与程序设计 Python 597 25
22 编程语言与程序设计 Python 474 15
30 编程语言与程序设计 Python 239 13
编程语言与程序设计 Visual Basic
一级分类 二级分类 7天点击量 订单预定
32 编程语言与程序设计 Visual Basic 28 0
网页制作/Web技术 HTML
一级分类 二级分类 7天点击量 订单预定
14 网页制作/Web技术 HTML 188 8
网页制作/Web技术 JavaScript
一级分类 二级分类 7天点击量 订单预定
7 网页制作/Web技术 JavaScript 100 7
网页制作/Web技术 WEB前端
一级分类 二级分类 7天点击量 订单预定
17 网页制作/Web技术 WEB前端 57 0
import pandas as pd #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
#抽取数据
df1=df[['一级分类','7天点击量','订单预定']]
df1
df1.groupby('一级分类').agg(['mean','sum'])
df1.groupby('一级分类').agg({'7天点击量':['mean','sum'],'订单预定':['sum']})
import pandas as pd #导入pandas模块
df=pd.read_excel('1月.xlsx') #导入Excel文件
df
#x是“宝贝标题”对应的列
#value_counts()函数用于Series对象中的每个值进行计数并且排序
max1 = lambda x: x.value_counts(dropna=False).index[0]
max1.__name__ = "购买次数最多"
df1=df.agg({'宝贝标题': [max1],
'数量': ['sum', 'mean'],
'买家实际支付金额': ['sum', 'mean']})
df1
import pandas as pd #导入pandas模块
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df=pd.read_csv('JD.csv',encoding='gbk') #导入csv文件
df=df.set_index(['商品名称'])
df
#创建字典
mapping={'北京出库销量':'北上广','上海出库销量':'北上广',
'广州出库销量':'北上广','成都出库销量':'成都',
'武汉出库销量':'武汉','西安出库销量':'西安'}
df1=df.groupby(mapping,axis=1).sum()
df1
import pandas as pd #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk') #导入csv文件
df=df.set_index(['商品名称'])
data={'北京出库销量':'北上广','上海出库销量':'北上广',
'广州出库销量':'北上广','成都出库销量':'成都',
'武汉出库销量':'武汉','西安出库销量':'西安',}
s1=pd.Series(data)
s1
df1=df.groupby(s1,axis=1).sum()
df1
DataFrame.shift(periods=1,freq=1,axis=0)
import pandas as pd
data = [110,105,99,120,115]
index=[1,2,3,4,5]
df = pd.DataFrame(data=data,index=index,columns=['英语'])
df['升降']=df['英语']-df['英语'].shift()
print(df)
import pandas as pd
import matplotlib.pylab as plt
data = [110,105,99,120,115,112,118,120,109,113]
index=[1,2,3,4,5,6,7,8,9,10]
df = pd.DataFrame(data=data,index=index,columns=['英语'])
df['升降']=df['英语']-df['英语'].shift()
print(df)
df['升降'].plot(style='b')
plt.show()
Series.str.split(pat=None,n=1,expand=False)
import pandas as pd
#导入Excel文件指定列数据(“买家会员名”和“收货地址”)
df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','收货地址'])
df
#使用split方法分割“收货地址”
series=df['收货地址'].str.split(' ',expand=True)
df['省']=series[0]
df['市']=series[1]
df['区']=series[2]
df1=df.head()
df1
import pandas as pd
#导入Excel文件部分列数据(“买家会员名”和“宝贝标题”)
df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题'])
df
#使用join方法和split方法分割“宝贝标题”
df = df.join(df['宝贝标题'].str.split(',', expand=True))
df1=df.head()
df1
import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[(1,2), (3,4),(5,6),(7,8),(9,10)]})
df
# apply函数分割元组
df[['b1', 'b2']] = df['b'].apply(pd.Series)
df
#或者join方法结合apply函数分割元组
df= df.join(df['b'].apply(pd.Series))
df
DataFrame.stack(level=-1,dropna=True)
import pandas as pd
df=pd.read_excel('grade.xls') #导入Excel文件
df
df = df.set_index(['班级','序号']) #设置2级索引“班级”和“序号”
df
df = df.stack()
df
DataFrame.unstack(level=-1,fill_value=None)
import pandas as pd
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df=pd.read_excel('grade.xls',sheet_name='英语2') #导入Excel文件
df
df = df.set_index(['班级','序号','Unnamed: 2']) #设置多级索引
df
df.unstack()
DataFrame.pivot(index=None,columns=None,values=None)
import pandas as pd
df=pd.read_excel('grade.xls',sheet_name='英语3') #导入Excel文件
df
df1=df.pivot(index='序号',columns='班级',values='得分')
df1
import pandas as pd
df = pd.read_excel('mrbooks.xls')
df
mydict=df1.to_dict()
for i,j in mydict.items():
print(i,':\t', j)
import pandas as pd
df =pd.read_excel('mrbooks.xls')
df
df1=df[['买家会员名']].head()
df1
list1=df1['买家会员名'].values.tolist()
for s in list1:
print(s)
import pandas as pd
df = pd.read_excel('fl4.xls')
df
df1=df[['label1','label2']].head()
df1
tuples = [tuple(x) for x in df1.values]
for t in tuples:
print(t)
import pandas as pd
df=pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题']).head()
df.to_html('mrbooks.html',header = True,index = False,encoding='gbk') #编码要也可能是utf8
Pandas.merge(right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'语文':[110,105,109],
'数学':[105,88,120],
'英语':[99,115,130]})
df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'体育':[34.5,39.7,38]})
df_merge=pd.merge(df1,df2,on='编号')
df_merge
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'语文':[110,105,109],
'数学':[105,88,120],
'英语':[99,115,130]})
df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'体育':[34.5,39.7,38]})
df_merge=pd.merge(df1,df2,left_index=True,right_index=True)
df_merge
df_merge=pd.merge(df1,df2,on='编号',left_index=True,rith_index=True)
df_merge=pd.merge(df1,df2,on='编号',how='left')
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'语文':[110,105,109],
'数学':[105,88,120],
'英语':[99,115,130]})
df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'体育':[34.5,39.7,38]})
# df_merge=pd.merge(df1,df2,on='编号',left_index=True,right_index=True)
# df_merge
df_merge=pd.merge(df1,df2,on='编号',how='left')
df_merge
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
'学生姓名':['明日同学','高猿员','钱多多']})
df2 = pd.DataFrame({'编号':['mr001','mr001','mr003'],
'语文':[110,105,109],
'数学':[105,88,120],
'英语':[99,115,130],
'时间':['1月','2月','1月']})
df_merge=pd.merge(df1,df2,on='编号')
df_merge
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr001','mr001'],
'体育':[34.5,39.7,38,33,35]})
df2 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr003','mr003'],
'语文':[110,105,109,110,108],
'数学':[105,88,120,123,119],
'英语':[99,115,130,109,128]})
df_merge=pd.merge(df1,df2)
df_merge
pandas.concat(objs,axis=0,join='outer',ignore_index:bool = False,keys=None,levels=None,names=None,verify_integrity:bool=False,sort:bool=False,copy:bool=True)
dfs=[df1,df2,df3]
result=pd.concat(dfs)
result=pd.concat(dfs,keys=['1月','2月','3月'])
result=pd.concat([df1,df4],axis=1)
result=pd.concat([df1,df4],axis=1,join="inner")
result=pd.concat([df1,df4],axis=1,join_axes=[df4,index]
DataFrame.to_excel(excel_writer,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None)
import pandas as pd
df1 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr001','mr001'],
'体育':[34.5,39.7,38,33,35]})
df2 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr003','mr003'],
'语文':[110,105,109,110,108],
'数学':[105,88,120,123,119],
'英语':[99,115,130,109,128]})
df_merge=pd.merge(df1,df2)
df_merge.to_excel('merge.xlsx')
df1.to_excel('df1.xlsx',sheet_name='df1')
DataFrame.to_csv(path_or_buf=None,sep=',',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,mode='w',encoding=None,compression='infer',quoting=None,quotechar="",line_terminator=None,chunksize=None,data_format=None,doublequote=True,escapechar=None,decimal='.',errors='strict')
import pandas as pd
data = [['a',110,105,99],['b',105,88,115],['c',109,120,130],['d',112,115]]
index = [1,2,3,4]
columns = ['name','语文','数学','英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
#相对位置,保存在程序所在路径下
df.to_csv('Result1.csv',encoding='gb2312')
#绝对位置
df.to_csv('d:\Result.csv',encoding='gb2312')
#分隔符。使用问号(?)分隔符分隔需要保存的数据
df.to_csv('Result2.csv',sep='?',encoding='gb2312')
#替换空值,缺失值保存为NA
df.to_csv('Result3.csv',na_rep='NA',encoding='gb2312')
#格式化数据,保留两位小数
df.to_csv('Result4.csv',float_format='%.2f',encoding='gb2312')
#保留某列数据,保存索引列和name列
df.to_csv('Result5.csv',columns=['name'],encoding='gb2312')
#是否保留列名,不保留列名
df.to_csv('Result6.csv',header=0,encoding='gb2312')
#是否保留行索引,不保留行索引
df.to_csv('Result7.csv',index=0,encoding='gb2312')
import pandas as pd
data = [['a',110,105,99],['b',105,88,115],['c',109,120,130],['d',112,115]]
index = [1,2,3,4]
columns = ['A','语文','数学','英语']
df1 = pd.DataFrame(data=data, index=index, columns=columns)
df1.to_excel('df1.xlsx',sheet_name='df1')
work=pd.ExcelWriter('df2.xlsx') #打开一个Excel文件
df1.to_excel(work,sheet_name='df2')
df1['A'].to_excel(work,sheet_name='df3')
work.save()