pandas简单应用---组内排序
需求描述:获取每个户型下租金前十的小区名
- 原数据格式
房子名 小区名 户型 价格 - groupby 的level参数起到关键作用
level:int,level name或其序列,默认为None
如果index是MultiIndex(分层),则按特定级别或级别分组
def price_by_xiaoqu_and_huxing():df = pd.read_sql(select([HouseModel.xiaoqu,HouseModel.huxing,HouseModel.price]), engine)# 得到每种户型每个小区的租金平均值df = df.groupby(['huxing', 'xiaoqu'])['price'].mean()# 组内排序(0表示户型组内排序,value是平均租金,按value排序)grouped = df.groupby(level=0, group_keys=False).nlargest(10)j = 0rows = []# 处理数据转成jsonfor i in grouped.index.labels[0]:a = grouped.index.labels[0][j]b = grouped.index.labels[1][j]huxing = grouped.index.levels[0][a]xiaoqu = grouped.index.levels[1][b]price = grouped[j]j = j + 1rows.append({'huxing': huxing, 'xiaoqu': xiaoqu, 'price': price})return rows
df.groupby(['huxing', 'xiaoqu'])['price'].mean()这段代码得出来的数据是这样的
huxing xiaoqu
1室0厅 万达广场(周浦) 2900.0上南一村 3750.0上南三村 4200.0上南四村 4300.0东建新村 3500.0东昌新村 4800.0东陆新村七街坊 3400.0兰园小区 5000.0南码头路193弄 3300.0塘桥小区 3800.0复地万科活力中心 18895.0大华锦绣华城(十二街区) 4600.0宁阳小区 3950.0展想悦廷 3800.0崂山三村 3950.0巨东小区 4500.0巨西小区 4000.0张杨路370弄 4500.0德州四村 3850.0思浦小区 3300.0招远小区 5200.0朱家滩小区 3800.0桃林一小区 4700.0梅园一街坊 4700.0梅园六街坊 4300.0梅园新村(浦东) 4300.0沪东新村 3500.0泾西一村 3300.0济阳三村 3800.0浦三路601弄 3100.0...
其后再groupby一次利用level,进行组内排序
huxing xiaoqu
1室0厅 复地万科活力中心 18895.000000阳光欧洲城(别墅) 11000.000000招远小区 5200.000000兰园小区 5000.000000浦东大道435-437号(单) 5000.000000东昌新村 4800.000000桃林一小区 4700.000000梅园一街坊 4700.000000羽北小区 4700.000000潍坊九村 4650.000000
最好没找到处理index的方法,自己遍历转换了,index其实是这样的数据
MultiIndex(levels=[['1室0厅', '1室1厅', '1室2厅', '2室0厅', '2室1厅', '2室2厅', '3室0厅', '3室1厅', '3室2厅', '3室3厅', '4室0厅', '4室1厅', '4室2厅', '4室3厅', '4室4厅', '5室1厅', '5室2厅', '5室', '7室3厅'], ['BPC陆家嘴创业街区', '万科五玠坊', '万科提香别墅', '万邦都市花园', '上海滩花园洋房', '上船大楼', '世茂湖滨花园(公寓)', '世茂滨江花园', '东园一村', '东园四村', '东园雅集轩', '东方园', '中新公寓', '中粮海景壹号', '中芯花园(公寓)', '久阳滨江公寓', '九龙仓滨江壹十八', '云台大厦', '云间绿大地', '仁恒公园世纪', '仁恒滨江园', '保利One56', '兰园小区', '凯德嘉博名邸', '华夏金桂四季全景台', '四季雅苑(公寓)', '四季雅苑(别墅)', '国信世纪海景', '圣马丽诺桥语', '复地万科活力中心', '大华锦绣华城(十七街区)(别墅)', '大华锦绣华城(十四街区)', '家化滨江苑', '尚海郦景', '展想悦廷'招远小区', '文兰小区', '新城碧翠', '新塘桥生活广场', '新洲豪园', '昌里花园', '明星花苑', '晓园', '晶耀名邸', '桃林一小区', '桃林小区', '梅园一街坊', '梅园新村(浦东)', '欣周花园', '汤臣一品', ''海怡别墅(别墅)', '涵乐园', '滨江凯旋门', '潍坊七村', '潍坊三村', '潍坊九村', '潍坊二村', '潍坊十村', '爱法珑庭', '爵士大厦', '环球翡翠湾花园(别墅)', '瑞苑公寓', '界龙新世纪公寓', '白金瀚宫', ' '盛大金磐', '盛族家园-悉尼阳光·悉尼星光', '碧云东方公寓', '碧云新天地(一期)', '碧云新天地(二期)', '碧云花园', '立诚苑', '竹园高层', '第五大道', '紫竹馨苑', '维诗凯亚', '绿地东上海', '绿宝园', 花园', '逸翠公馆', '金桥瑞仕花园', '金爵别墅', '锦三角花园(公寓)', '锦绣一方名苑', '锦绣满堂花园', '长城珑湾', '阳光欧洲城(别墅)', '陆家嘴东和公寓', '陆家嘴锦绣前城', '陆家嘴锦绣里', '雍景台', '香梅花园(三-五期)', '香榭丽花园', '高行绿洲(四期)', '黄山始信苑']],labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 22, 22], [41, 117, 53, 29, 71, 13, 62, 64, 104, 79, 74, 7, 85, 46, 82, 122, 22, 97, 34, 54, 7, 36, 44, 48, 111, 105, 15, 75, 33, 115, 5, 32, 65, 78, 77, 81, 80, 8, 29, 79, 119, 88, 82, 0, 34, 55, 123, 83, 91, 30, 76, 72, 109, 121, 89, 7, 27, 26, 6, 45, 73, 5, 125, 124, 61, 50, 88, 56, 9, 63, 119, 110, 58, 92, 28, 109, 38, 99, 89, 94, 39, 7, 72, 118, 72, 84, 108, 113, 49, 52, 96, 84, 120, 14, 11, 47, 66, 100, 57, 35, 67, 20, 51, 38, 72, 109, 40, 68, 37, 101, 25, 1, 40, 72, 87, 2, 111, 102, 90, 117, 2, 24, 116, 17, 21, 86, 100, 51, 99, 27, 68, 85, 72, 87, 23, 112, 4, 72, 25, 10, 40, 87, 101, 70, 112, 2, 43, 18, 42, 103, 106, 95, 98, 114, 107, 87, 69, 59, 31, 3, 12, 25, 60, 102, 19, 49, 16, 93]],names=['huxing', 'xiaoqu'])
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
