【Python实用基础整合(四)】DataFrame排序、Json库报错以及Pandas一次性读取多个csv文件合并为一个数据集

一、DataFrame排序

1.1 方法说明

使用DataFrame的sort_values(by, inplace, ascending)方法可根据指定列对DataFame进行排序。
参数说明:

  • by:排序依据的列名,可为单列也可为多列:[“column_name1”]或者[“column_name1”, “column_name1”, ...];
  • inplace:是否替换原dataframe,默认为False
  • ascending:是否为升序,默认为True
df.sort_values(["column_name1", "column_name2"] , inplace=True, ascending=True) 

1.2 示例

# 1.创建df
df = pd.DataFrame({'price':[6, 4, 2, 4, 6], 'weight': [12, 43, 23, 3, 5], 'total':[72, 172, 46, 12, 30]})
df
Out[12]: 
   price  weight  total
0      6      12     72
1      4      43    172
2      2      23     46
3      4       3     12
4      6       5     30

# 2.按照total列排序
df.sort_values(by=['total'])
Out[14]: 
   price  weight  total
3      4       3     12
4      6       5     30
2      2      23     46
0      6      12     72
1      4      43    172

# 3.按照多列排序
df.sort_values(by=['price','total'])
Out[13]: 
   price  weight  total
2      2      23     46
3      4       3     12
1      4      43    172
4      6       5     30
0      6      12     72

# 4.降序排列
df.sort_values(by=['price'], ascending=False)
Out[16]: 
   price  weight  total
0      6      12     72
4      6       5     30
1      4      43    172
3      4       3     12
2      2      23     46

# 5.替换原df
df.sort_values(by=['price'], ascending=False, inplace=True)
df   # df已变为排序后的df
Out[18]: 
   price  weight  total
0      6      12     72
4      6       5     30
1      4      43    172
3      4       3     12
2      2      23     46

二、Json库报错

读取Json文件时:

import json
 
f = open("demo.json","r")
data = json.loads(f)
print(data)

报错:

TypeError: the JSON object must be str, bytes or bytearray, not TextIOWrapper

原因是,json中有四个方法:dumps、loads、dump和loaddumps和loads是在内存中转换(python对象和json字符串之间的转换)而dump和load则是对应于文件的处理。因此,open后的json文件内容需要读到内存中方可使用loads方法。因此可修改为:

import json
 
f = open("demo.json","r")
strs = f.read()
data = json.loads(strs)
print(data)

三、Pandas一次性读取多个csv文件合并为一个数据集

一次性读取多个csv文件,将数据合并的方法较多,这里提供一参考方法:

import os
import pandas as pd

csv_files = os.listdir(csv_dir)

# 创建一个空list,用来存放文件名
# 依次读取文件中的内容
data_list = []
for csv_file in csv_files:
    df_tmp = pd.read_csv(os.path.join(csv_dir, csv_file), header=0)
    data_list.append(df_tmp )

# 合并数据集
df_total = pd.concat(data_list, ignore_index=False)


【述毕】

笔者独自运营了微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。(微信搜索“微思研”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁣北潇

老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值