关于csv

CSV 导入问题

关于csv导入的时候不能用UTF-8 等格式
需要用encoding=‘unicode_escape’
就不会出现编码错误

import pandas as pd
import csv


# 文件调用函数
def file():
    try:
        w_file = input("请输入输入文件的位置")
        f=open(w_file,"rb+")
    except:
        print("输入文件位置有错,没有次文件")

    try:
        to_file = input("请输入输出文件的位置")
        f=open(w_file,"rb+")
    except:
        print("输入文件位置有错,没有次文件")
    return w_file,to_file
def one():
    w_file,to_file=file()
    data1 = pd.read_csv(w_file, encoding='unicode_escape')
    data2 = data1.loc[0:4]
    data3 = data1.loc[-2:-1]
    data2.isnull()
    data2.dropna(axis='columns', how='all', inplace=True)
    data2.dropna(axis='index', how='all', inplace=True)
    data3.isnull()
    data3.dropna(axis='columns', how='all', inplace=True)
    data3.dropna(axis='index', how='all', inplace=True)
    print(data2)
    print(data3)

def two():
    w_file, to_file = file()
    print(w_file,to_file)
    data = pd.read_csv(w_file,encoding='unicode_escape')
    k = len(data)
    # 构建需要写的标题为列表
    list1 = ['Region', 'Country', 'City/station', 'PM 2.5', 'PM2.5 Year']
    f = open(to_file,'w',encoding="UTF-8")
    # 写入标题
    for i in range(0,5):
        f.write(list1[i]+" ")
    f.write("\n")
    # 写入内容
    for i in range(0,k):
        for j in list1:
            s=data[j][i]
            f.write(str(s)+" ")
            f.write(" ")
        f.write("\n")
    print("文件写入成功")



def three():
    w_file, to_file = file()
    try:
        csvFile = open('5.csv','w',newline='',encoding='unicode_escape')
        # 构建容器
        writer = csv.writer(csvFile)
        csvRow = []
        f = open("3.txt",'r',encoding='UTF-8')
        tag=0
        for line in f:
            # 按空格分隔
            csvRow = line.split(" ")
            writer.writerow(csvRow)
        f.close()
        csvFile.close()
    except:
        data = pd.read_csv(w_file, encoding='UTF-8')
        list1 = ['Region', 'Country', 'City/station', 'PM 2.5', 'PM2.5 Year']
        # 排序
        # 这里放“UTF-8 就会出现错误”
        data = data[list1].sort_values(by='PM 2.5', ascending=False)
        data.to_csv(to_file)
    print("排序完成")
def four():
    w_file,to_file=file()
    data=pd.read_csv(w_file,encoding='unicode_escape')
    data1=data['PM 2.5']
    a=[]
    for i in data1:
        i=float(i)
        a=a+[i]
    bins = [0,50,100,150200]
    result=pd.cut(a,bins)
    print(pd.value_counts(result))
    # 直方图
    pd.cut(data1,bins, labels = ['One', 'Two', 'Three']).value_counts().plot.bar()
    plt.savefig('world_pm25_hist.png')
    plt.show()
    # 饼状图
    pd.cut(data1,bins, labels = ['One', 'Two', 'Three']).value_counts().plot.pie()
    plt.savefig("world_pm25_pie.png")
    plt.show()

if __name__ == '__main__':
    a = input('请输入指令1,2,3,4')
    if a == '1':
        one()
        print('执行成功')
    elif a == '2':
        two()
        print('执行成功')
    elif a == '3':
        three()
        print('执行成功')
    elif a == '4':
        four()
        print('执行成功')
    else:
        print('输入错误,请重新输入')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值