python对txt,json,jsonl,csv,xlsx读取操作,dataframe的增删改查学习

使用pysenal包中的read_json,read_jsonl,read_file,write_json,write_jsonl,write_file方法来对json文件和text文件进行读写

from pysenal import read_json,read_file,read_jsonline
import os
print(os.getcwd())
data1 = read_json('data/shiv.json')
data2 = read_jsonline('data/test.jsonl')
data3 = read_file('data/1.txt')
print(data1[1][0].keys())
print(data2[1].keys())
print(data3)

from pysenal import write_json,write_jsonline,write_file
write_json('data/shiv1.json',data1)
write_jsonline('data/test1.jsonl',data2)
write_file('data/2.txt',data3)

使用pandas的dataframe结构打开csv文件:

import pandas as pd
data = pd.read_csv("data/1.csv")
print(type(data))
print(data.keys())
print(data['synonyms'][1])

data = pd.read_table("data/1.csv",sep=",")
print(type(data))

dataframe结构,相当于词典,第一个index是列字段,第二个index是行号

     name   class  max_speed  num_legs
0  falcon    bird      389.0         2
1  parrot    bird       24.0         2
2    lion  mammal       80.5         4
3  monkey  mammal        NaN         4

增加一行或者一列的操作:

df.loc['new_raw'] = ['yasuo','monkey',1,3]
>>>
           name   class  max_speed  num_legs
0        falcon    bird      389.0         2
1        parrot    bird       24.0         2
2          lion  mammal       80.5         4
3        monkey  mammal        NaN         4
new_raw   yasuo  monkey        1.0         3


df['attack'] = [5,6,7,8,9]
>>>
           name   class  max_speed  num_legs  attack
0        falcon    bird      389.0         2       5
1        parrot    bird       24.0         2       6
2          lion  mammal       80.5         4       7
3        monkey  mammal        NaN         4       8
new_raw   yasuo  monkey        1.0         3       9

删除一行或一列:

df = df.drop([1])
df = df.drop(['name'],axis=1) #删除列需要加上axis=1这个参数

>>>
    class  max_speed  num_legs
0    bird      389.0         2
2  mammal       80.5         4
3  mammal        NaN         4

改变dataframe某个单元格的值或某片区域的值这样操作:

df.loc[0:1,('name')]=['modeganqing','xxx']
>>>
          name   class  max_speed  num_legs
0  modeganqing    bird      389.0         2
1          xxx    bird       24.0         2
2         lion  mammal       80.5         4
3       monkey  mammal        NaN         4


df['name'][1] = 'modeganqing' #这种方法不提倡
>>>
          name   class  max_speed  num_legs
0       falcon    bird      389.0         2
1  modeganqing    bird       24.0         2
2         lion  mammal       80.5         4
3       monkey  mammal        NaN         4

dataframe可以变成很多格式,如numpy,就可以使用双数字下标进行增删改查。

dn = df.to_numpy()
>>>
[['falcon' 'bird' 389.0 2]
 ['parrot' 'bird' 24.0 2]
 ['lion' 'mammal' 80.5 4]
 ['monkey' 'mammal' nan 4]]

变成词典,这时候列名是key,value是列中所有的值组成的词典,行坐标是字词典里的key

dn = df.to_dict()
>>>
{'name': {0: 'falcon', 1: 'parrot', 2: 'lion', 3: 'monkey'}, 'class': {0: 'bird', 1: 'bird', 2: 'mammal', 3: 'mammal'}, 'max_speed': {0: 389.0, 1: 24.0, 2: 80.5, 3: nan}, 'num_legs': {0: 2, 1: 2, 2: 4, 3: 4}}

可以把dataframe保存为csv,excel,json等文件:

df.to_csv('data/df.csv')
df.to_excel('data/df.xlsx')
df.to_html('data/df.html')
df.to_json('data/df.json')

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你的数据量太大,无法一次性将所有数据转换为一个CSV文件,你可以考虑将数据分割成多个CSV文件,每个文件对应一个sheet表。 以下是一个示例代码,可以将大型JSON文件分割成多个CSV文件,每个文件包含指定数量的数据,并分别保存为不同的sheet表: ```python import pandas as pd import json # 读取大型JSON文件 with open("large_data.json", "r") as f: data = json.load(f) # 指定每个CSV文件中的数据量 chunk_size = 10000 # 计算需要分割的次数 num_chunks = len(data) // chunk_size + 1 # 创建Excel文件 writer = pd.ExcelWriter("output.xlsx", engine="xlsxwriter") for i in range(num_chunks): # 计算当前切片的起始和结束位置 start = i * chunk_size end = start + chunk_size # 切片数据 chunk_data = data[start:end] # 将切片数据转换为DataFrame df = pd.DataFrame(chunk_data) # 将DataFrame保存到当前sheet表 sheet_name = f"Sheet{i+1}" df.to_excel(writer, sheet_name=sheet_name, index=False) # 保存Excel文件 writer.save() ``` 在上述示例中,我们使用`pandas`库将JSON数据转换为DataFrame,并使用`xlsxwriter`库将DataFrame保存到多个sheet表中。你可以根据需要调整`chunk_size`参数来控制每个CSV文件中的数据量。 请注意,你需要安装`xlsxwriter`库来运行上述示例代码,可以使用以下命令进行安装: ``` pip install xlsxwriter ``` 希望这个示例能够帮助你解决问题!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值