Board logo

标题: Pandas的数据转换 [打印本页]

作者: admin    时间: 2023-10-11 10:38     标题: Pandas的数据转换

###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_index = ['SP001','SP002','SP003'] Key_columns = ['商品名称+味道','产地'] Key_data = [['蛋糕,草莓味','广东省广州市'],['蛋糕,青瓜味','广东省广州市'], ['面包,番茄味','广东省佛山市']] df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 使用split函数分割"商品名称+味道": Result_1 = df['商品名称+味道'].str.split(',',expand=True) #这里的分隔符为“,” df['商品名称'] = Result_1[0] df['味道'] = Result_1[1] print(df) print("-" * 10) ## 重新设置各个列的位置: Result_2 = df[['商品名称+味道','商品名称','味道','产地']] print(Result_2) print("-" * 3) Result_3 = df[['商品名称','味道','产地']] print(Result_3) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 产地 SP001 蛋糕,草莓味 广东省广州市 SP002 蛋糕,青瓜味 广东省广州市 SP003 面包,番茄味 广东省佛山市 ---------- ---------- 商品名称+味道 产地 商品名称 味道 SP001 蛋糕,草莓味 广东省广州市 蛋糕 草莓味 SP002 蛋糕,青瓜味 广东省广州市 蛋糕 青瓜味 SP003 面包,番茄味 广东省佛山市 面包 番茄味 ---------- 商品名称+味道 商品名称 味道 产地 SP001 蛋糕,草莓味 蛋糕 草莓味 广东省广州市 SP002 蛋糕,青瓜味 蛋糕 青瓜味 广东省广州市 SP003 面包,番茄味 面包 番茄味 广东省佛山市 --- 商品名称 味道 产地 SP001 蛋糕 草莓味 广东省广州市 SP002 蛋糕 青瓜味 广东省广州市 SP003 面包 番茄味 广东省佛山市 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_columns = ['商品编号','商品名称+味道','产地'] Key_data = [['SP001','蛋糕 草莓味','广东省广州市荔湾区'],['SP002','蛋糕 青瓜味','广东省广州市南沙区'], ['SP003','面包 番茄味','广东省佛山市南海区']] df = pd.DataFrame(data=Key_data,columns=Key_columns) #使用二维数组创建DataFrame数据 df = df.set_index(['商品编号']) #设置指定列的数据为索引 print(df) print("-" * 10) print("-" * 10) ## 使用split函数分割"商品名称+味道": Result_1 = df['商品名称+味道'].str.split(' ',expand=True) #这里的分隔符为空格 df['商品名称'] = Result_1[0] df['味道'] = Result_1[1] print(df) print("-" * 10) ## 重新设置各个列的位置: Result_2 = df.reindex(columns=['商品名称+味道','商品名称','味道','产地']) print(Result_2) print("-" * 3) Result_3 = df.reindex(columns=['商品名称','味道','产地']) print(Result_3) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 产地 商品编号 SP001 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包 番茄味 广东省佛山市南海区 ---------- ---------- 商品名称+味道 产地 商品名称 味道 商品编号 SP001 蛋糕 草莓味 广东省广州市荔湾区 蛋糕 草莓味 SP002 蛋糕 青瓜味 广东省广州市南沙区 蛋糕 青瓜味 SP003 面包 番茄味 广东省佛山市南海区 面包 番茄味 ---------- 商品名称+味道 商品名称 味道 产地 商品编号 SP001 蛋糕 草莓味 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕 青瓜味 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包 番茄味 面包 番茄味 广东省佛山市南海区 --- 商品名称 味道 产地 商品编号 SP001 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_index = ['李大杰','Jacky','zhuohua'] Key_columns = ['商品名称','收货地址'] Key_data = [['蛋糕,草莓味','广东省广州市荔湾区A街道100号'],['蛋糕,青瓜味','广西省南宁市江南区B街道200号'], ['面包,番茄味','广东省佛山市南海区C街道300号']] df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 使用split函数分割"收货地址": Result_1 = df['收货地址'].str.split('省',expand=True) #这里的分隔符为“省” df['省'] = Result_1[0] print(df) print("-" * 10) df['省份'] = Result_1[0] + '省' print(df) print("-" * 10) ## 删除列标题为“商品名称”的数据: df.drop(['商品名称'],axis=1,inplace=True) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称 收货地址 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 ---------- ---------- 商品名称 收货地址 省 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 广东 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 广西 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 广东 ---------- 商品名称 收货地址 省 省份 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 广东 广东省 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 广西 广西省 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 广东 广东省 ---------- 收货地址 省 省份 李大杰 广东省广州市荔湾区A街道100号 广东 广东省 Jacky 广西省南宁市江南区B街道200号 广西 广西省 zhuohua 广东省佛山市南海区C街道300号 广东 广东省 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_columns = ['收货人','商品名称','收货地址'] Key_data = [['李大杰','蛋糕,草莓味','广东省广州市荔湾区A街道100号'],['Jacky','蛋糕,青瓜味','广西省南宁市江南区B街道200号'], ['zhuohua','面包,番茄味','广东省佛山市南海区C街道300号']] df = pd.DataFrame(data=Key_data,columns=Key_columns) #使用二维数组创建DataFrame数据 df = df.set_index(['收货人']) #设置指定列的数据为索引 print(df) print("-" * 10) print("-" * 10) ## 使用split函数分割"收货地址": Result_1 = df['收货地址'].str.split('省',expand=True) #这里的分隔符为“省” df['省'] = Result_1[0] print(df) print("-" * 10) df['省份'] = Result_1[0] + '省' print(df) print("-" * 10) ## 一次性删除列标题为“商品名称”、“收货地址”的数据: df.drop(['商品名称','收货地址'],axis=1,inplace=True) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称 收货地址 收货人 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 ---------- ---------- 商品名称 收货地址 省 收货人 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 广东 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 广西 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 广东 ---------- 商品名称 收货地址 省 省份 收货人 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 广东 广东省 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 广西 广西省 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 广东 广东省 ---------- 省 省份 收货人 李大杰 广东 广东省 Jacky 广西 广西省 zhuohua 广东 广东省 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_index = ['李大杰','Jacky','zhuohua'] Key_columns = ['商品名称','收货地址'] Key_data = [['蛋糕,草莓味','广东省广州市荔湾区A街道100号'],['蛋糕,青瓜味','广西省南宁市江南区B街道200号'], ['面包,番茄味','广东省佛山市南海区C街道300号']] df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 删除列标题为“商品名称”的数据: df.drop(['商品名称'],axis=1,inplace=True) print(df) print("-" * 10) ## 使用split函数分割"收货地址": Result_1 = df['收货地址'].str.split('省',expand=True) #这里的分隔符为“省” df['省份'] = Result_1[0] + '省' print(df) print("-" * 10) df['收货地址(不包含省份)'] = Result_1[1] print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称 收货地址 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 ---------- ---------- 收货地址 李大杰 广东省广州市荔湾区A街道100号 Jacky 广西省南宁市江南区B街道200号 zhuohua 广东省佛山市南海区C街道300号 ---------- 收货地址 省份 李大杰 广东省广州市荔湾区A街道100号 广东省 Jacky 广西省南宁市江南区B街道200号 广西省 zhuohua 广东省佛山市南海区C街道300号 广东省 ---------- 收货地址 省份 收货地址(不包含省份) 李大杰 广东省广州市荔湾区A街道100号 广东省 广州市荔湾区A街道100号 Jacky 广西省南宁市江南区B街道200号 广西省 南宁市江南区B街道200号 zhuohua 广东省佛山市南海区C街道300号 广东省 佛山市南海区C街道300号 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_index = ['李大杰','Jacky','zhuohua'] Key_columns = ['商品名称','收货地址'] Key_data = [['蛋糕,草莓味','广东省广州市荔湾区A街道100号'],['蛋糕,青瓜味','广西省南宁市江南区B街道200号'], ['面包,番茄味','广东省佛山市南海区C街道300号']] df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 删除列标题为“商品名称”的数据: df.drop(['商品名称'],axis=1,inplace=True) print(df) print("-" * 10) ## 使用split函数分割"收货地址": df['街道牌号'] = df['收货地址'].str.split('区',expand=True)[1] #这里的分隔符为“区” Result_1 = df['收货地址'].str.split('区',expand=True)[0] #这里的分隔符为“区” Result_2 = Result_1.str.split('市',expand=True)[1] #这里的分隔符为“市” df['区'] = Result_2 + '区' Result_3 = Result_1.str.split('市',expand=True)[0] #这里的分隔符为“市” Result_4 = Result_3.str.split('省',expand=True)[1] #这里的分隔符为“省” df['城市'] = Result_4 + '市' Result_5 = Result_3.str.split('省',expand=True)[0] #这里的分隔符为“省” df['省份'] = Result_5 + '省' print(df) print("-" * 10) ## 重新设置各个列的位置: df_2 = df.reindex(columns=['省份','城市','区','街道牌号']) print(df_2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称 收货地址 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 ---------- ---------- 收货地址 李大杰 广东省广州市荔湾区A街道100号 Jacky 广西省南宁市江南区B街道200号 zhuohua 广东省佛山市南海区C街道300号 ---------- 收货地址 街道牌号 区 城市 省份 李大杰 广东省广州市荔湾区A街道100号 A街道100号 荔湾区 广州市 广东省 Jacky 广西省南宁市江南区B街道200号 B街道200号 江南区 南宁市 广西省 zhuohua 广东省佛山市南海区C街道300号 C街道300号 南海区 佛山市 广东省 ---------- 省份 城市 区 街道牌号 李大杰 广东省 广州市 荔湾区 A街道100号 Jacky 广西省 南宁市 江南区 B街道200号 zhuohua 广东省 佛山市 南海区 C街道300号 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[[1,2],[3,'李大杰'],[5,6],[7,8],[9,10]] }) print(df) print("-" * 10) print("-" * 10) df[['B列_1','B列_2']] = df['B列'].apply(pd.Series) #使用apply函数对列表进行分割 print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, 李大杰] 2 3 [5, 6] 3 4 [7, 8] 4 5 [9, 10] ---------- ---------- A列 B列 B列_1 B列_2 0 1 [1, 2] 1 2 1 2 [3, 李大杰] 3 李大杰 2 3 [5, 6] 5 6 3 4 [7, 8] 7 8 4 5 [9, 10] 9 10 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[(1,2),(3,'D'),(5,6),('zhuohua',8),(9,18)] }) print(df) print("-" * 10) print("-" * 10) ## 删除列标题为“A列”的数据: df.drop(['A列'],axis=1,inplace=True) print(df) print("-" * 10) df[['b1','b2']] = df['B列'].apply(pd.Series) #使用apply函数对元组进行分割 print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 (1, 2) 1 2 (3, D) 2 3 (5, 6) 3 4 (zhuohua, 8) 4 5 (9, 18) ---------- ---------- B列 0 (1, 2) 1 (3, D) 2 (5, 6) 3 (zhuohua, 8) 4 (9, 18) ---------- B列 b1 b2 0 (1, 2) 1 2 1 (3, D) 3 D 2 (5, 6) 5 6 3 (zhuohua, 8) zhuohua 8 4 (9, 18) 9 18 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[[1,2],[3,'zhuohua'],[5,6],[7,8],[9,10]] }) print(df) print("-" * 10) print("-" * 10) df = df.join(df['B列'].apply(pd.Series)) #使用join函数结合apply函数对列表进行分割 print(df) print("-" * 10) ## 修改多个列标题: df.rename(columns={0:'B列_1',1:'B列_2'},inplace=True) print(df) print("-" * 10) ## 一次性删除列标题为“A列”、“B列”的数据: df.drop(['A列','B列'],axis=1,inplace=True) print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, zhuohua] 2 3 [5, 6] 3 4 [7, 8] 4 5 [9, 10] ---------- ---------- A列 B列 0 1 0 1 [1, 2] 1 2 1 2 [3, zhuohua] 3 zhuohua 2 3 [5, 6] 5 6 3 4 [7, 8] 7 8 4 5 [9, 10] 9 10 ---------- A列 B列 B列_1 B列_2 0 1 [1, 2] 1 2 1 2 [3, zhuohua] 3 zhuohua 2 3 [5, 6] 5 6 3 4 [7, 8] 7 8 4 5 [9, 10] 9 10 ---------- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 9 10 ---------- B列_1 B列_2 1 2 3 zhuohua 5 6 7 8 9 10 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[(1,2),(3,'李大杰'),(5,6),(7,8),(9,10)] }) print(df) print("-" * 10) print("-" * 10) df = df.join(df['B列'].apply(pd.Series)) #使用join函数结合apply函数对元组进行分割 print(df) print("-" * 10) ## 修改多个列标题: df.rename(columns={0:'b1',1:'b2'},inplace=True) print(df) print("-" * 10) ## 删除列标题为“A列”的数据: df.drop(['A列'],axis=1,inplace=True) print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 (1, 2) 1 2 (3, 李大杰) 2 3 (5, 6) 3 4 (7, 8) 4 5 (9, 10) ---------- ---------- A列 B列 0 1 0 1 (1, 2) 1 2 1 2 (3, 李大杰) 3 李大杰 2 3 (5, 6) 5 6 3 4 (7, 8) 7 8 4 5 (9, 10) 9 10 ---------- A列 B列 b1 b2 0 1 (1, 2) 1 2 1 2 (3, 李大杰) 3 李大杰 2 3 (5, 6) 5 6 3 4 (7, 8) 7 8 4 5 (9, 10) 9 10 ---------- B列 b1 b2 0 (1, 2) 1 2 1 (3, 李大杰) 3 李大杰 2 (5, 6) 5 6 3 (7, 8) 7 8 4 (9, 10) 9 10 ---------- B列 b1 b2 (1, 2) 1 2 (3, 李大杰) 3 李大杰 (5, 6) 5 6 (7, 8) 7 8 (9, 10) 9 10 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年一班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame转换为字典时,主要使用DataFrame对象中的to_dict方法,以索引作为字典的键(key),以列作为字典的值(value): print("分别输出各个班级的数学成绩的总和:") df1 = df.groupby(["班级"])["数学成绩"].sum() mydict = df1.to_dict() for i,j in mydict.items(): print(i,':\t', j) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年一班 ---------- ---------- 分别输出各个班级的数学成绩的总和: 三年一班 : 221 三年二班 : 88 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年一班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame转换为字典时,主要使用DataFrame对象中的to_dict方法,以索引作为字典的键(key),以列作为字典的值(value): print("分别输出各个班级的数学成绩的平均值:") df1 = df.groupby(["班级"])["数学成绩"].mean() mydict = df1.to_dict() for i,j in mydict.items(): print(i,':\t',j) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年一班 ---------- ---------- 分别输出各个班级的数学成绩的平均值: 三年一班 : 110.5 三年二班 : 88.0 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年一班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame转换为字典时,主要使用DataFrame对象中的to_dict方法,以索引作为字典的键(key),以列作为字典的值(value): print("分别输出各个班级的数学成绩的最大值:") df1 = df.groupby(["班级"])["数学成绩"].max() mydict = df1.to_dict() for i,j in mydict.items(): print(i,':\t',j) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年一班 ---------- ---------- 分别输出各个班级的数学成绩的最大值: 三年一班 : 115 三年二班 : 88 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年一班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame转换为字典时,主要使用DataFrame对象中的to_dict方法,以索引作为字典的键(key),以列作为字典的值(value): print("分别输出各个班级的数学成绩的最小值:") df1 = df.groupby(["班级"])["数学成绩"].min() mydict = df1.to_dict() for i,j in mydict.items(): print(i,':\t',j) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年一班 ---------- ---------- 分别输出各个班级的数学成绩的最小值: 三年一班 : 106 三年二班 : 88 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以使用DataFrame对象中的的tolist方法: print('输出“班级”那一列的前两行数据:(以列表的形式显示)') df1 = df[['班级']].head(2) list1 = df1['班级'].values.tolist() print(type(list1)) for Key_1 in list1: print(Key_1) print("-" * 10) print('输出“班级”那一列的前三行数据:(以列表的形式显示)') df2 = df[['班级']].head(3) list2 = df2['班级'].values.tolist() print(type(list2)) for Key_2 in list2: print(Key_2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的前两行数据:(以列表的形式显示) 三年一班 三年二班 ---------- 输出“班级”那一列的前三行数据:(以列表的形式显示) 三年一班 三年二班 三年三班 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以使用DataFrame对象中的的tolist方法: print('输出“班级”那一列的全部数据:(以列表的形式显示)') df1 = df[['班级']] list1 = df1['班级'].values.tolist() for Key_1 in list1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的全部数据:(以列表的形式显示) 三年一班 三年二班 三年三班 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以先通过循环语句按行读取DataFrame数据,然后使用列表函数list将其转换为列表: print('输出“班级”那一列的前两行数据:(以列表的形式显示)') df1 = df[['班级']].head(2) list1 = [list(x) for x in df1.values] print(type(list1)) for Key_1 in list1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的前两行数据:(以列表的形式显示) ['三年一班'] ['三年二班'] C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以先通过循环语句按行读取DataFrame数据,然后使用列表函数list将其转换为列表: print('输出“班级”那一列的全部数据:(以列表的形式显示)') df1 = df[['班级']] list1 = [list(x) for x in df1.values] for Key_1 in list1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的全部数据:(以列表的形式显示) ['三年一班'] ['三年二班'] ['三年三班'] C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以先通过循环语句按行读取DataFrame数据,然后使用列表函数list将其转换为列表: print('输出“班级”、“数学成绩”这两列的前两行数据:(以列表的形式显示)') df1 = df[['班级','数学成绩']].head(2) list1 = [list(x) for x in df1.values] print(type(list1)) for Key_1 in list1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”、“数学成绩”这两列的前两行数据:(以列表的形式显示) ['三年一班', 106] ['三年二班', 88] C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为列表时,可以先通过循环语句按行读取DataFrame数据,然后使用列表函数list将其转换为列表: print('输出“班级”、“数学成绩”这两列的全部数据:(以列表的形式显示)') df1 = df[['班级','数学成绩']] list1 = [list(x) for x in df1.values] for Key_1 in list1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”、“数学成绩”这两列的全部数据:(以列表的形式显示) ['三年一班', 106] ['三年二班', 88] ['三年三班', 115] C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为元组时,可以先通过循环语句按行读取DataFrame数据,然后使用元组函数tuple将其转换为元组: print('输出“班级”那一列的前两行数据:(以元组的形式显示)') df1 = df[['班级']].head(2) tuple1 = [tuple(x) for x in df1.values] print(type(tuple1)) for Key_1 in tuple1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的前两行数据:(以元组的形式显示) ('三年一班',) ('三年二班',) C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为元组时,可以先通过循环语句按行读取DataFrame数据,然后使用元组函数tuple将其转换为元组: print('输出“班级”那一列的全部数据:(以元组的形式显示)') df1 = df[['班级']] tuple1 = [tuple(x) for x in df1.values] for Key_1 in tuple1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”那一列的全部数据:(以元组的形式显示) ('三年一班',) ('三年二班',) ('三年三班',) C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为元组时,可以先通过循环语句按行读取DataFrame数据,然后使用元组函数tuple将其转换为元组: print('输出“班级”、“数学成绩”这两列的前两行数据:(以元组的形式显示)') df1 = df[['班级','数学成绩']].head(2) tuple1 = [tuple(x) for x in df1.values] print(type(tuple1)) for Key_1 in tuple1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”、“数学成绩”这两列的前两行数据:(以元组的形式显示) ('三年一班', 106) ('三年二班', 88) C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df = pd.DataFrame( { '语文成绩':[111,105,99.5], '数学成绩':[106,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年三班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 将DataFrame对象转换为元组时,可以先通过循环语句按行读取DataFrame数据,然后使用元组函数tuple将其转换为元组: print('输出“班级”、“数学成绩”这两列的全部数据:(以元组的形式显示)') df1 = df[['班级','数学成绩']] tuple1 = [tuple(x) for x in df1.values] for Key_1 in tuple1: print(Key_1) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 111.0 106 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年三班 ---------- ---------- 输出“班级”、“数学成绩”这两列的全部数据:(以元组的形式显示) ('三年一班', 106) ('三年二班', 88) ('三年三班', 115) C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[105,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 一次性删除列标题为“英语成绩”、“数学成绩”的数据: df.drop(['英语成绩','数学成绩'],axis=1,inplace=True) print(df) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 按“班级”进行分组后求平均值:(按一列分组统计) df = df.groupby('班级').mean() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=True, inplace=True) #按“语文成绩的平均值”进行排序(升序) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 105 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 语文成绩 班级 李大杰 110.0 三年一班 Jacky 105.0 三年二班 zhuohua 99.5 三年二班 ---------- 分别输出各班级的“语文成绩”的平均成绩: 语文成绩 班级 三年一班 110.00 三年二班 102.25 --- 语文成绩的平均值 班级 三年一班 110.00 三年二班 102.25 --- 语文成绩的平均值 班级 三年二班 102.25 三年一班 110.00 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[105,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 一次性删除列标题为“英语成绩”、“数学成绩”的数据: df.drop(['英语成绩','数学成绩'],axis=1,inplace=True) print(df) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 按“班级”进行分组后求平均值,并且重新设置索引:(按一列分组统计) df = df.groupby('班级').mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=True, inplace=True) #按“语文成绩的平均值”进行排序(升序) print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 105 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 语文成绩 班级 李大杰 110.0 三年一班 Jacky 105.0 三年二班 zhuohua 99.5 三年二班 ---------- 分别输出各班级的“语文成绩”的平均成绩: 班级 语文成绩 0 三年一班 110.00 1 三年二班 102.25 --- 班级 语文成绩的平均值 0 三年一班 110.00 1 三年二班 102.25 --- 班级 语文成绩的平均值 1 三年二班 102.25 0 三年一班 110.00 --- 班级 语文成绩的平均值 三年二班 102.25 三年一班 110.00 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[105,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 按“班级”进行分组后,求“语文成绩”的平均值,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['语文成绩'].mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 105 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 分别输出各班级的“语文成绩”的平均成绩: 班级 语文成绩 0 三年一班 110.00 1 三年二班 102.25 --- 班级 语文成绩的平均值 0 三年一班 110.00 1 三年二班 102.25 --- 班级 语文成绩的平均值 三年一班 110.00 三年二班 102.25 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[105,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 按“班级”进行分组后,求“数学成绩”的总和,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['数学成绩'].sum().reset_index() print(df) print("-" * 3) df.rename(columns={'数学成绩':'数学成绩的总和'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='数学成绩的总和',ascending=False, inplace=True) #按“数学成绩的总和”进行排序(降序) print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 105 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 班级 数学成绩 0 三年一班 105 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 105 1 三年二班 203 --- 班级 数学成绩的总和 1 三年二班 203 0 三年一班 105 --- 班级 数学成绩的总和 三年二班 203 三年一班 105 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[105,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 按“班级”进行分组后,求“数学成绩”的总和,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['数学成绩'].sum().reset_index() print(df) print("-" * 3) df.rename(columns={'数学成绩':'数学成绩的总和'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='数学成绩的总和',ascending=False, inplace=True) #按“数学成绩的总和”进行排序(降序) print(df) print("-" * 10) print("-" * 10) ## “顺序排名”那一列的数据自己进行升序(method="first",ascending=False) df['顺序排名']=df['数学成绩的总和'].rank(method="first",ascending=False) print(df) print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 print(df) print("-" * 3) df = df.reindex(columns=['顺序排名','数学成绩的总和','班级']) #重新设置各个列的位置 print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 105 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 班级 数学成绩 0 三年一班 105 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 105 1 三年二班 203 --- 班级 数学成绩的总和 1 三年二班 203 0 三年一班 105 ---------- ---------- 班级 数学成绩的总和 顺序排名 1 三年二班 203 1.0 0 三年一班 105 2.0 --- 班级 数学成绩的总和 顺序排名 1 三年二班 203 1 0 三年一班 105 2 --- 顺序排名 数学成绩的总和 班级 1 1 203 三年二班 0 2 105 三年一班 --- 顺序排名 数学成绩的总和 班级 1 203 三年二班 2 105 三年一班 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[1050,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 按“班级”进行分组后,求“数学成绩”的总和,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['数学成绩'].sum().reset_index() print(df) print("-" * 3) df.rename(columns={'数学成绩':'数学成绩的总和'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='数学成绩的总和',ascending=False, inplace=True) #按“数学成绩的总和”进行排序(降序) print(df) print("-" * 10) print("-" * 10) ## “顺序排名”那一列的数据自己进行升序(method="max",ascending=False) df['顺序排名']=df['数学成绩的总和'].rank(method="max",ascending=False) print(df) print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 print(df) print("-" * 3) df = df.reindex(columns=['顺序排名','数学成绩的总和','班级']) #重新设置各个列的位置 print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 1050 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 班级 数学成绩 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 1050 1 三年二班 203 ---------- ---------- 班级 数学成绩的总和 顺序排名 0 三年一班 1050 1.0 1 三年二班 203 2.0 --- 班级 数学成绩的总和 顺序排名 0 三年一班 1050 1 1 三年二班 203 2 --- 顺序排名 数学成绩的总和 班级 0 1 1050 三年一班 1 2 203 三年二班 --- 顺序排名 数学成绩的总和 班级 1 1050 三年一班 2 203 三年二班 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[1050,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 按“班级”进行分组后,求“数学成绩”的总和,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['数学成绩'].sum().reset_index() print(df) print("-" * 3) df.rename(columns={'数学成绩':'数学成绩的总和'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='数学成绩的总和',ascending=True, inplace=True) #按“数学成绩的总和”进行排序(升序) print(df) print("-" * 10) print("-" * 10) ## “顺序排名”那一列的数据自己进行升序(method="min",ascending=True) df['顺序排名']=df['数学成绩的总和'].rank(method="min",ascending=True) print(df) print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 print(df) print("-" * 3) df = df.reindex(columns=['顺序排名','数学成绩的总和','班级']) #重新设置各个列的位置 print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 1050 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 班级 数学成绩 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 1 三年二班 203 0 三年一班 1050 ---------- ---------- 班级 数学成绩的总和 顺序排名 1 三年二班 203 1.0 0 三年一班 1050 2.0 --- 班级 数学成绩的总和 顺序排名 1 三年二班 203 1 0 三年一班 1050 2 --- 顺序排名 数学成绩的总和 班级 1 1 203 三年二班 0 2 1050 三年一班 --- 顺序排名 数学成绩的总和 班级 1 203 三年二班 2 1050 三年一班 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df=pd.DataFrame( { '语文成绩':[110,105,99.5], '数学成绩':[1050,88,115], '英语成绩':[109,120,130], '班级':['三年一班','三年二班','三年二班'] }, index=['李大杰','Jacky','zhuohua']) print(df) print("-" * 10) print("-" * 10) ## 按“班级”进行分组后,求“数学成绩”的总和,并且重新设置索引:(按一列分组统计) df = df.groupby('班级')['数学成绩'].sum().reset_index() print(df) print("-" * 3) df.rename(columns={'数学成绩':'数学成绩的总和'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='数学成绩的总和',ascending=True, inplace=True) #按“数学成绩的总和”进行排序(升序) print(df) print("-" * 10) print("-" * 10) ## “顺序排名”那一列的数据自己进行降序(method="min",ascending=False) df['顺序排名']=df['数学成绩的总和'].rank(method="min",ascending=False) print(df) print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 print(df) print("-" * 3) df = df.reindex(columns=['顺序排名','数学成绩的总和','班级']) #重新设置各个列的位置 print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 李大杰 110.0 1050 109 三年一班 Jacky 105.0 88 120 三年二班 zhuohua 99.5 115 130 三年二班 ---------- ---------- 班级 数学成绩 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 0 三年一班 1050 1 三年二班 203 --- 班级 数学成绩的总和 1 三年二班 203 0 三年一班 1050 ---------- ---------- 班级 数学成绩的总和 顺序排名 1 三年二班 203 2.0 0 三年一班 1050 1.0 --- 班级 数学成绩的总和 顺序排名 1 三年二班 203 2 0 三年一班 1050 1 --- 顺序排名 数学成绩的总和 班级 1 2 203 三年二班 0 1 1050 三年一班 --- 顺序排名 数学成绩的总和 班级 2 203 三年二班 1 1050 三年一班 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_data=[[110,105,99,'三年一班','三年级'],[66,77,99,'三年二班','三年级'], [108,88,115,'三年一班','三年级'],[115,28,65,'三年二班','三年级'], [109,120,129.5,'四年一班','四年级']] Key_index=['李大杰','小红','Jacky','Lily','zhuohua wu'] Key_columns=['语文成绩','数学成绩','英语成绩','班级','年级'] df=pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 一次性删除列标题为“英语成绩”、“数学成绩”的数据: df.drop(['英语成绩','数学成绩'],axis=1,inplace=True) print(df) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 先按“年级”进行分组,再按“班级”进行分组后,求平均值,并且重新设置索引:(按多列分组统计) df = df.groupby(['年级','班级']).mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=True, inplace=True) #按“语文成绩的平均值”进行排序(升序) print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 年级 李大杰 110 105 99.0 三年一班 三年级 小红 66 77 99.0 三年二班 三年级 Jacky 108 88 115.0 三年一班 三年级 Lily 115 28 65.0 三年二班 三年级 zhuohua wu 109 120 129.5 四年一班 四年级 ---------- ---------- 语文成绩 班级 年级 李大杰 110 三年一班 三年级 小红 66 三年二班 三年级 Jacky 108 三年一班 三年级 Lily 115 三年二班 三年级 zhuohua wu 109 四年一班 四年级 ---------- 分别输出各班级的“语文成绩”的平均成绩: 年级 班级 语文成绩 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 109.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 109.0 --- 年级 班级 语文成绩的平均值 1 三年级 三年二班 90.5 0 三年级 三年一班 109.0 2 四年级 四年一班 109.0 --- 年级 班级 语文成绩的平均值 三年级 三年二班 90.5 三年级 三年一班 109.0 四年级 四年一班 109.0 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_data=[[110,105,99,'三年一班','三年级'],[66,77,99,'三年二班','三年级'], [108,88,115,'三年一班','三年级'],[115,28,65,'三年二班','三年级'], [106,120,129.5,'四年一班','四年级']] Key_index=['李大杰','小红','Jacky','Lily','zhuohua wu'] Key_columns=['语文成绩','数学成绩','英语成绩','班级','年级'] df=pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 先按“年级”进行分组,再按“班级”进行分组后,求“语文成绩”的平均值,并且重新设置索引:(按多列分组统计) df = df.groupby(['年级','班级'])['语文成绩'].mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=False, inplace=True) #按“语文成绩的平均值”进行排序(降序) print(df) print("-" * 3) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 年级 李大杰 110 105 99.0 三年一班 三年级 小红 66 77 99.0 三年二班 三年级 Jacky 108 88 115.0 三年一班 三年级 Lily 115 28 65.0 三年二班 三年级 zhuohua wu 106 120 129.5 四年一班 四年级 ---------- ---------- 分别输出各班级的“语文成绩”的平均成绩: 年级 班级 语文成绩 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 2 四年级 四年一班 106.0 1 三年级 三年二班 90.5 --- 年级 班级 语文成绩的平均值 三年级 三年一班 109.0 四年级 四年一班 106.0 三年级 三年二班 90.5 C:\Users\jacky\Desktop> Pandas的导出和导入(xlsx文件): Win7连接公网安装第三方库(xlwt): C:\Users\jacky\Desktop>pip3 install xlwt==1.3.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com Win7连接公网安装第三方库(xlrd): C:\Users\jacky\Desktop>pip3 install xlrd==1.2.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com Win7连接公网安装第三方库(openpyxl): C:\Users\jacky\Desktop>pip3 install openpyxl==3.1.2 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com 列出当前环境所有已经安装的第三方库的名称和其版本号: C:\Users\jacky\Desktop>pip3 freeze et-xmlfile==1.1.0 numpy==1.19.5 openpyxl==3.1.2 pandas==1.1.5 python-dateutil==2.8.2 pytz==2023.3 six==1.16.0 xlrd==1.2.0 xlwt==1.3.0 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) Key_columns = ['商品编号','商品名称+味道','产地'] Key_data = [['SP001','蛋糕:草莓味','广东省广州市荔湾区'],['SP002','蛋糕:青瓜味','广东省广州市南沙区'], ['SP003','面包:番茄味','广东省佛山市南海区']] df = pd.DataFrame(data=Key_data,columns=Key_columns) #使用二维数组创建DataFrame数据 df = df.set_index(['商品编号']) #设置指定列的数据为索引 print(df) print("-" * 10) print("-" * 10) ## 使用split函数分割"商品名称+味道": Result_1 = df['商品名称+味道'].str.split(':',expand=True) #这里的分隔符为“:” df['商品名称'] = Result_1[0] df['味道'] = Result_1[1] print(df) print("-" * 10) ## 重新设置各个列的位置: df = df.reindex(columns=['商品名称+味道','商品名称','味道','产地']) print(df) ## 把结果分别导出到指定的xlsx文件: df.to_excel('C:\\Users\\jacky\\Desktop\\文件_1.xlsx',sheet_name='Sheet页_1',index=False,header=True) #不保留索引(行标题),但保留列标题 df.to_excel('C:/Users/jacky/Desktop/文件_mybook_2.xlsx',sheet_name='Sheet页_2',index=False,header=False) #不保留索引(行标题)、列标题 df.to_excel('d:/share/mybook_3.xlsx',sheet_name='Sheet页_3',index=True,header=True) #保留索引(行标题)、列标题 脚本运行的结果:(假如目标文件存在则覆盖,不存在则自动创建) C:\Users\jacky\Desktop>python xx.py 商品名称+味道 产地 商品编号 SP001 蛋糕:草莓味 广东省广州市荔湾区 SP002 蛋糕:青瓜味 广东省广州市南沙区 SP003 面包:番茄味 广东省佛山市南海区 ---------- ---------- 商品名称+味道 产地 商品名称 味道 商品编号 SP001 蛋糕:草莓味 广东省广州市荔湾区 蛋糕 草莓味 SP002 蛋糕:青瓜味 广东省广州市南沙区 蛋糕 青瓜味 SP003 面包:番茄味 广东省佛山市南海区 面包 番茄味 ---------- 商品名称+味道 商品名称 味道 产地 商品编号 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('文件_1.xlsx') #读取与脚本在同一目录里的Excel文件(.xlsx) print(df) #显示所有记录 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('文件_1.xlsx',sheet_name=0) # sheet_name=0 即第一个工作表,省略时就是使用第一个工作表 print(df.head(2)) #显示前2条记录 print("-" * 10) print("-" * 10) ## 显示前5条记录: Result_2 = df.head(5) print(Result_2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 ---------- ---------- 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('文件_1.xlsx',sheet_name='Sheet页_1') # sheet_name='' 指定工作表名称 print(df) print("-" * 10) print("-" * 10) print(df[['商品名称','味道','产地']]) #只显示指定的列数据 print("-" * 10) print(df[['商品名称','味道','产地']].head(2)) #只显示指定的列数据的前2条记录 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- ---------- 商品名称 味道 产地 0 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕 青瓜味 广东省广州市南沙区 2 面包 番茄味 广东省佛山市南海区 ---------- 商品名称 味道 产地 0 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕 青瓜味 广东省广州市南沙区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('C:/Users/jacky/Desktop/文件_1.xlsx',sheet_name='Sheet页_1') print(df) print("-" * 10) print("-" * 10) print(df.iloc[:,[1,2,3]]) #输出第2列、第3列、第4列的数据 print("-" * 10) print(df.iloc[:,[1,2,3]].head(2)) #只显示第2列、第3列、第4列的前2条记录 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- ---------- 商品名称 味道 产地 0 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕 青瓜味 广东省广州市南沙区 2 面包 番茄味 广东省佛山市南海区 ---------- 商品名称 味道 产地 0 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕 青瓜味 广东省广州市南沙区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('C:\\Users\\jacky\\Desktop\\文件_1.xlsx',sheet_name='Sheet页_1') print(df) print("-" * 10) print("-" * 10) ## 插入一列,列标题为“商品编号”,位置为第2列: Columns_1=['SP001','SP002','SP003'] df.insert(1,'商品编号',Columns_1) print(df) print("-" * 10) ## 重新设置各个列的位置: df = df[['商品编号','商品名称+味道','商品名称','味道','产地']] print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- ---------- 商品名称+味道 商品编号 商品名称 味道 产地 0 蛋糕:草莓味 SP001 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 SP002 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 SP003 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称+味道 商品名称 味道 产地 0 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称+味道 商品名称 味道 产地 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('C:/Users/jacky/Desktop/文件_mybook_2.xlsx',sheet_name='Sheet页_2',header=None) #这里使用了“header=0” print(df) print("-" * 10) print("-" * 10) df.columns = ['商品名称+味道','商品名称','味道','产地'] #自定义列标题 print(df) print("-" * 10) ## 插入一列,列标题为“商品编号”,位置为第1列: Columns_1=['SP001','SP002','SP003'] df.insert(0,'商品编号',Columns_1) print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 0 1 2 3 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- ---------- 商品名称+味道 商品名称 味道 产地 0 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称+味道 商品名称 味道 产地 0 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称+味道 商品名称 味道 产地 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('d:/share/mybook_3.xlsx',sheet_name='Sheet页_3') print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品编号 商品名称+味道 商品名称 味道 产地 0 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称+味道 商品名称 味道 产地 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 C:\Users\jacky\Desktop> ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('d:\\share\\mybook_3.xlsx',sheet_name=0) print(df) print("-" * 10) ## 一次性删除列标题为“产地”、“商品名称+味道”的数据: df.drop(['产地','商品名称+味道'],axis=1,inplace=True) print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品编号 商品名称+味道 商品名称 味道 产地 0 SP001 蛋糕:草莓味 蛋糕 草莓味 广东省广州市荔湾区 1 SP002 蛋糕:青瓜味 蛋糕 青瓜味 广东省广州市南沙区 2 SP003 面包:番茄味 面包 番茄味 广东省佛山市南海区 ---------- 商品编号 商品名称 味道 0 SP001 蛋糕 草莓味 1 SP002 蛋糕 青瓜味 2 SP003 面包 番茄味 ---------- 商品编号 商品名称 味道 SP001 蛋糕 草莓味 SP002 蛋糕 青瓜味 SP003 面包 番茄味 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd def func1(): #自定义导出的函数 pd.set_option('display.unicode.east_asian_width',True) Key_index = ['李大杰','Jacky','zhuohua'] Key_columns = ['商品名称','收货地址'] Key_data = [['蛋糕,草莓味','广东省广州市荔湾区A街道100号'],['蛋糕,青瓜味','广西省南宁市江南区B街道200号'], ['面包,番茄味','广东省佛山市南海区C街道300号']] df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 删除列标题为“商品名称”的数据: df.drop(['商品名称'],axis=1,inplace=True) print(df) print("-" * 10) ## 使用split函数分割"收货地址": df['街道牌号'] = df['收货地址'].str.split('区',expand=True)[1] #这里的分隔符为“区” Result_1 = df['收货地址'].str.split('区',expand=True)[0] #这里的分隔符为“区” Result_2 = Result_1.str.split('市',expand=True)[1] #这里的分隔符为“市” df['区'] = Result_2 + '区' Result_3 = Result_1.str.split('市',expand=True)[0] #这里的分隔符为“市” Result_4 = Result_3.str.split('省',expand=True)[1] #这里的分隔符为“省” df['城市'] = Result_4 + '市' Result_5 = Result_3.str.split('省',expand=True)[0] #这里的分隔符为“省” df['省份'] = Result_5 + '省' print(df) print("-" * 10) ## 重新设置各个列的位置: df_2 = df.reindex(columns=['省份','城市','区','街道牌号']) print(df_2) ## 把结果导出到指定的xlsx文件: df_2.to_excel('d:/share/mybook_3.xlsx',sheet_name='Sheet_3',index=True,header=True) #保留索引(行标题)、列标题 print("-" * 10) print("-" * 10) print("-" * 10) func2() #执行func2() def func2(): #自定义导入的函数 pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('d:\\share\\mybook_3.xlsx',sheet_name='Sheet_3') #导入指定的xlsx文件 print(df) print(type(df)) print("-" * 10) ## 修改一个列标题: df.rename(columns={'Unnamed: 0':'收货人'},inplace=True) print(df) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) if __name__ == '__main__': func1() #执行func1() 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 商品名称 收货地址 李大杰 蛋糕,草莓味 广东省广州市荔湾区A街道100号 Jacky 蛋糕,青瓜味 广西省南宁市江南区B街道200号 zhuohua 面包,番茄味 广东省佛山市南海区C街道300号 ---------- ---------- 收货地址 李大杰 广东省广州市荔湾区A街道100号 Jacky 广西省南宁市江南区B街道200号 zhuohua 广东省佛山市南海区C街道300号 ---------- 收货地址 街道牌号 区 城市 省份 李大杰 广东省广州市荔湾区A街道100号 A街道100号 荔湾区 广州市 广东省 Jacky 广西省南宁市江南区B街道200号 B街道200号 江南区 南宁市 广西省 zhuohua 广东省佛山市南海区C街道300号 C街道300号 南海区 佛山市 广东省 ---------- 省份 城市 区 街道牌号 李大杰 广东省 广州市 荔湾区 A街道100号 Jacky 广西省 南宁市 江南区 B街道200号 zhuohua 广东省 佛山市 南海区 C街道300号 ---------- ---------- ---------- Unnamed: 0 省份 城市 区 街道牌号 0 李大杰 广东省 广州市 荔湾区 A街道100号 1 Jacky 广西省 南宁市 江南区 B街道200号 2 zhuohua 广东省 佛山市 南海区 C街道300号 ---------- 收货人 省份 城市 区 街道牌号 0 李大杰 广东省 广州市 荔湾区 A街道100号 1 Jacky 广西省 南宁市 江南区 B街道200号 2 zhuohua 广东省 佛山市 南海区 C街道300号 ---------- 收货人 省份 城市 区 街道牌号 李大杰 广东省 广州市 荔湾区 A街道100号 Jacky 广西省 南宁市 江南区 B街道200号 zhuohua 广东省 佛山市 南海区 C街道300号 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd def func1(): #自定义导出的函数 pd.set_option('display.unicode.east_asian_width',True) Key_data=[[110,105,99,'三年一班','三年级'],[66,77,99,'三年二班','三年级'], [108,88,115,'三年一班','三年级'],[115,28,65,'三年二班','三年级'], [106,120,129.5,'四年一班','四年级']] Key_index=['李大杰','小红','Jacky','Lily','zhuohua wu'] Key_columns=['语文成绩','数学成绩','英语成绩','班级','年级'] df=pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) ## 一次性删除列标题为“英语成绩”、“数学成绩”的数据: df.drop(['英语成绩','数学成绩'],axis=1,inplace=True) print(df) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 先按“年级”进行分组,再按“班级”进行分组后,求平均值,并且重新设置索引:(按多列分组统计) df = df.groupby(['年级','班级']).mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=False, inplace=True) #按“语文成绩的平均值”进行排序(降序) print(df) print("-" * 3) ## “顺序排名”那一列的数据自己进行升序(method="max",ascending=False) df['顺序排名']=df['语文成绩的平均值'].rank(method="max",ascending=False) #print(df) #print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 #print(df) #print("-" * 3) df = df.reindex(columns=['顺序排名','语文成绩的平均值','班级','年级']) #重新设置各个列的位置 print(df) ## 把结果导出到指定的xlsx文件: df.to_excel('d:/mybook_3.xlsx',sheet_name='工作表3',index=False,header=True) #不保留索引(行标题),但保留列标题 def func2(): #自定义导入的函数 pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('d:/mybook_3.xlsx',sheet_name=0) #导入指定的xlsx文件 print(df) print(type(df)) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) if __name__ == '__main__': func1() #执行func1() print("-" * 10) print("-" * 10) print("-" * 10) func2() #执行func2() 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 年级 李大杰 110 105 99.0 三年一班 三年级 小红 66 77 99.0 三年二班 三年级 Jacky 108 88 115.0 三年一班 三年级 Lily 115 28 65.0 三年二班 三年级 zhuohua wu 106 120 129.5 四年一班 四年级 ---------- ---------- 语文成绩 班级 年级 李大杰 110 三年一班 三年级 小红 66 三年二班 三年级 Jacky 108 三年一班 三年级 Lily 115 三年二班 三年级 zhuohua wu 106 四年一班 四年级 ---------- 分别输出各班级的“语文成绩”的平均成绩: 年级 班级 语文成绩 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 2 四年级 四年一班 106.0 1 三年级 三年二班 90.5 --- 顺序排名 语文成绩的平均值 班级 年级 0 1 109.0 三年一班 三年级 2 2 106.0 四年一班 四年级 1 3 90.5 三年二班 三年级 ---------- ---------- ---------- 顺序排名 语文成绩的平均值 班级 年级 0 1 109.0 三年一班 三年级 1 2 106.0 四年一班 四年级 2 3 90.5 三年二班 三年级 ---------- 顺序排名 语文成绩的平均值 班级 年级 1 109.0 三年一班 三年级 2 106.0 四年一班 四年级 3 90.5 三年二班 三年级 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd def func1(): #自定义导出的函数 pd.set_option('display.unicode.east_asian_width',True) Key_data=[[110,105,99,'三年一班','三年级'],[66,77,99,'三年二班','三年级'], [108,88,115,'三年一班','三年级'],[115,28,65,'三年二班','三年级'], [106,120,129.5,'四年一班','四年级']] Key_index=['李大杰','小红','Jacky','Lily','zhuohua wu'] Key_columns=['语文成绩','数学成绩','英语成绩','班级','年级'] df=pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据 print(df) print("-" * 10) print("-" * 10) print("分别输出各班级的“语文成绩”的平均成绩:") ## 先按“年级”进行分组,再按“班级”进行分组后,求“语文成绩”的平均值,并且重新设置索引:(按多列分组统计) df = df.groupby(['年级','班级'])['语文成绩'].mean().reset_index() print(df) print("-" * 3) df.rename(columns={'语文成绩':'语文成绩的平均值'},inplace=True) #修改一个列标题 print(df) print("-" * 3) df.sort_values(by='语文成绩的平均值',ascending=False, inplace=True) #按“语文成绩的平均值”进行排序(降序) print(df) print("-" * 3) ## “顺序排名”那一列的数据自己进行升序(method="first",ascending=False) df['顺序排名']=df['语文成绩的平均值'].rank(method="first",ascending=False) #print(df) #print("-" * 3) df['顺序排名'] = df['顺序排名'].astype(int) #列标题为“顺序排名”的数据不保留小数 #print(df) #print("-" * 3) df = df.reindex(columns=['顺序排名','语文成绩的平均值','班级','年级']) #重新设置各个列的位置 print(df) ## 把结果导出到指定的xlsx文件: df.to_excel('d:\\share\\mybook_3.xlsx',sheet_name='工作表-3',index=False,header=True) #不保留索引(行标题),但保留列标题 def func2(): #自定义导入的函数 pd.set_option('display.unicode.east_asian_width',True) df = pd.read_excel('d:/share/mybook_3.xlsx',sheet_name='工作表-3') #导入指定的xlsx文件 print(df) print(type(df)) print("-" * 10) ## 不输出索引: df = df.to_string(index=False) print(df) if __name__ == '__main__': func1() #执行func1() print("-" * 10) print("-" * 10) print("-" * 10) func2() #执行func2() 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 语文成绩 数学成绩 英语成绩 班级 年级 李大杰 110 105 99.0 三年一班 三年级 小红 66 77 99.0 三年二班 三年级 Jacky 108 88 115.0 三年一班 三年级 Lily 115 28 65.0 三年二班 三年级 zhuohua wu 106 120 129.5 四年一班 四年级 ---------- ---------- 分别输出各班级的“语文成绩”的平均成绩: 年级 班级 语文成绩 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 1 三年级 三年二班 90.5 2 四年级 四年一班 106.0 --- 年级 班级 语文成绩的平均值 0 三年级 三年一班 109.0 2 四年级 四年一班 106.0 1 三年级 三年二班 90.5 --- 顺序排名 语文成绩的平均值 班级 年级 0 1 109.0 三年一班 三年级 2 2 106.0 四年一班 四年级 1 3 90.5 三年二班 三年级 ---------- ---------- ---------- 顺序排名 语文成绩的平均值 班级 年级 0 1 109.0 三年一班 三年级 1 2 106.0 四年一班 四年级 2 3 90.5 三年二班 三年级 ---------- 顺序排名 语文成绩的平均值 班级 年级 1 109.0 三年一班 三年级 2 106.0 四年一班 四年级 3 90.5 三年二班 三年级 C:\Users\jacky\Desktop> ######(写入) ###### #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df_1 = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[[1,2],[3,'zhuohua'],[5,6],[7,8],['李大杰',10]] }) print(df_1) print("-" * 10) print("-" * 10) df_2 = df_1[['B列_1','B列_2']] = df_1['B列'].apply(pd.Series) #使用apply函数对df_1进行分割 print(df_1) df_1.drop(['B列_1','B列_2'],axis=1,inplace=True) #一次性删除df_1的列标题为“B列_1”、“B列_2”的数据 print("-" * 3) print(df_1) print("-" * 10) print(df_2) print("-" * 3) ## 修改df_2的多个列标题: df_2.rename(columns={0:'B列_1',1:'B列_2'},inplace=True) print(df_2) ## 把结果分别导出到同一个Excel文件(.xlsx)的不同工作表里: Work_1 = pd.ExcelWriter('学生信息表-1.xlsx') df_1.to_excel(Work_1,sheet_name='Sheet页_1',index=False,header=True) #不保留索引(行标题),但保留列标题 df_2.to_excel(Work_1,sheet_name='Sheet页-2',index=False,header=True) #不保留索引(行标题),但保留列标题 Work_1.save() 脚本运行的结果:(假如目标Excel文件存在则覆盖,不存在则自动创建) C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, zhuohua] 2 3 [5, 6] 3 4 [7, 8] 4 5 [李大杰, 10] ---------- ---------- A列 B列 B列_1 B列_2 0 1 [1, 2] 1 2 1 2 [3, zhuohua] 3 zhuohua 2 3 [5, 6] 5 6 3 4 [7, 8] 7 8 4 5 [李大杰, 10] 李大杰 10 --- A列 B列 0 1 [1, 2] 1 2 [3, zhuohua] 2 3 [5, 6] 3 4 [7, 8] 4 5 [李大杰, 10] ---------- 0 1 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 --- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 C:\Users\jacky\Desktop> ######(读取) #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df_1 = pd.read_excel('学生信息表-1.xlsx',sheet_name=0) # sheet_name=0 即第一个工作表 print(df_1) print("-" * 10) print("-" * 10) df_2 = pd.read_excel('学生信息表-1.xlsx',sheet_name=1) # sheet_name=1 即第二个工作表 print(df_2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, 'zhuohua'] 2 3 [5, 6] 3 4 [7, 8] 4 5 ['李大杰', 10] ---------- ---------- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 C:\Users\jacky\Desktop> ######(读取) #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df_1 = pd.read_excel('学生信息表-1.xlsx',sheet_name=1) # sheet_name=1 即第二个工作表 print(df_1) print("-" * 10) print("-" * 10) df_2 = pd.read_excel('学生信息表-1.xlsx',sheet_name='Sheet页_1') # sheet_name='' 指定工作表名称 print(df_2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 ---------- ---------- A列 B列 0 1 [1, 2] 1 2 [3, 'zhuohua'] 2 3 [5, 6] 3 4 [7, 8] 4 5 ['李大杰', 10] C:\Users\jacky\Desktop> ######(追加) #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df_3 = pd.DataFrame({'学生编号':['mr001','mr002','mr003'],'学生姓名':['zhuohua','Jacky','李大杰'], '语文成绩':[34.5,39.7,38]}) print(df_3) with pd.ExcelWriter("学生信息表-1.xlsx", mode='a', engine='openpyxl') as writer: df_3.to_excel(writer, sheet_name="我的工作表3", index=False) #往已有的Excel文件(.xlsx)中追加一个工作表 脚本运行的结果:(这种方法支持.xlsx文件,但不支持.xls文件;假如Excel文件不存在,则报错) C:\Users\jacky\Desktop>python xx.py 学生编号 学生姓名 语文成绩 0 mr001 zhuohua 34.5 1 mr002 Jacky 39.7 2 mr003 李大杰 38.0 C:\Users\jacky\Desktop> ######(读取) #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df1 = pd.read_excel('学生信息表-1.xlsx',sheet_name=0) # sheet_name=0 即第一个工作表 print(df1) print("-" * 10) df2 = pd.read_excel('学生信息表-1.xlsx',sheet_name=1) # sheet_name=1 即第二个工作表 print(df2) print("-" * 10) df3 = pd.read_excel('学生信息表-1.xlsx',sheet_name=2) # sheet_name=2 即第三个工作表 print(df3) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, 'zhuohua'] 2 3 [5, 6] 3 4 [7, 8] 4 5 ['李大杰', 10] ---------- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 ---------- 学生编号 学生姓名 语文成绩 0 mr001 zhuohua 34.5 1 mr002 Jacky 39.7 2 mr003 李大杰 38.0 C:\Users\jacky\Desktop> ######(读取) #coding=utf-8 import pandas as pd pd.set_option('display.unicode.east_asian_width',True) df1 = pd.read_excel('学生信息表-1.xlsx',sheet_name='Sheet页_1') # sheet_name='' 指定工作表名称 print(df1) print("-" * 10) df3 = pd.read_excel('学生信息表-1.xlsx',sheet_name='我的工作表3') print(df3) print("-" * 10) df2 = pd.read_excel('学生信息表-1.xlsx',sheet_name='Sheet页-2') print(df2) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 [1, 2] 1 2 [3, 'zhuohua'] 2 3 [5, 6] 3 4 [7, 8] 4 5 ['李大杰', 10] ---------- 学生编号 学生姓名 语文成绩 0 mr001 zhuohua 34.5 1 mr002 Jacky 39.7 2 mr003 李大杰 38.0 ---------- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 C:\Users\jacky\Desktop> ###### ###### #coding=utf-8 import pandas as pd def func1(): #自定义导出的函数 pd.set_option('display.unicode.east_asian_width',True) #使用字典创建DataFrame数据 df_1 = pd.DataFrame({ 'A列':[1,2,3,4,5], 'B列':[(1,2),(3,'zhuohua'),(5,6),(7,8),('李大杰',10)] }) print(df_1) print("-" * 10) print("-" * 10) df_2 = df_1[['B列_1','B列_2']] = df_1['B列'].apply(pd.Series) #使用apply函数对df_1进行分割 print(df_1) df_1.drop(['B列_2','B列_1'],axis=1,inplace=True) #一次性删除df_1的列标题为“B列_2”、“B列_1”的数据 print("-" * 3) print(df_1) print("-" * 10) print(df_2) print("-" * 3) ## 修改df_2的多个列标题: df_2.rename(columns={0:'B列_1',1:'B列_2'},inplace=True) print(df_2) ## 把结果分别导出到同一个Excel文件(.xlsx)的不同工作表里: Work_1 = pd.ExcelWriter('学生信息表-1.xlsx') df_1.to_excel(Work_1,sheet_name='Sheet页_1',index=False,header=True) #不保留索引(行标题),但保留列标题 df_2.to_excel(Work_1,sheet_name='Sheet页-2',index=False,header=True) #不保留索引(行标题),但保留列标题 Work_1.save() def func2(): #自定义导入的函数 pd.set_option('display.unicode.east_asian_width',True) df_1 = pd.read_excel('学生信息表-1.xlsx',sheet_name='Sheet页_1') #导入指定的xlsx文件的工作表 print(df_1) print("-" * 10) df_2 = pd.read_excel('学生信息表-1.xlsx',sheet_name=1) #导入指定的xlsx文件的工作表 print(df_2) if __name__ == '__main__': func1() #执行func1() print("-" * 10) print("-" * 10) print("-" * 10) func2() #执行func2() 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py A列 B列 0 1 (1, 2) 1 2 (3, zhuohua) 2 3 (5, 6) 3 4 (7, 8) 4 5 (李大杰, 10) ---------- ---------- A列 B列 B列_1 B列_2 0 1 (1, 2) 1 2 1 2 (3, zhuohua) 3 zhuohua 2 3 (5, 6) 5 6 3 4 (7, 8) 7 8 4 5 (李大杰, 10) 李大杰 10 --- A列 B列 0 1 (1, 2) 1 2 (3, zhuohua) 2 3 (5, 6) 3 4 (7, 8) 4 5 (李大杰, 10) ---------- 0 1 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 --- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 ---------- ---------- ---------- A列 B列 0 1 (1, 2) 1 2 (3, 'zhuohua') 2 3 (5, 6) 3 4 (7, 8) 4 5 ('李大杰', 10) ---------- B列_1 B列_2 0 1 2 1 3 zhuohua 2 5 6 3 7 8 4 李大杰 10 C:\Users\jacky\Desktop> 相关文章: Pandas的基础 Pandas的数据合并 Pandas的进阶(三) Pandas+Excel+绘图库Matplotlib split()函数




欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2