【Python强化】使用pandas和csv读取csv文件_导入pandas库,读取data文件夹中的order.csv文件,编码格式为“gbk”,打印出所有列-程序员宅基地

技术标签: python  数据分析  数据挖掘  Python  

一、pandas读取方式

1、csv介绍

csv文件是一种以逗号分割字符的文件形式

我们创建一个简单的文件demo.csv,如下格式的形式进行存储,以,进行分割

name,score,age,sex
lhh,100,24,男
wcy,99,28,
2.读文件
  • 直接读取
import pandas as pd
# 读取csv文件  全文件读取
data = pd.read_csv('demo.csv',encoding="gbk")  # 中文显示需要指定编码格式
df = pd.DataFrame(data)   # 当然这一步也可以不要,因为读出来的结果就是这种格式的,但是习惯性的写上这种方式
print(df)

输出:

  name  score  age sex
0  lhh    100   24   男
1  wcy     99   28   女
  • 按行读取
# 读取csv文件,一行一行的进行读取
file = pd.read_csv('demo.csv',encoding="gbk")
df = pd.DataFrame(file)

for i in range(len(df)):
    row  = df[i:i+1]
    print(row ,'\n')

输出:

  name  score  age sex
0  lhh    100   24   男 

  name  score  age sex
1  wcy     99   28
  • 获取文本标题中的每个值
# row
print("获取row 中的每个值")
for i in range(len(df)):
    row  = df[i:i+1]
    name = row ['name'][i]
    score = row ['score'][i]
    print(name,score,'\n')
3.写入csv
# 写  使用pd将数据写入到csv文件当中,按列写入
file = pd.read_csv('demo.csv',encoding="gbk")
df = pd.DataFrame(file)

dict = {
    }

for i in range(len(df)):
    row = df[i:i + 1]
    name = row['name'][i]
    sex = row['sex'][i]
    dict[name] = sex

new_df = pd.DataFrame.from_dict(dict,orient='index')
new_df.to_csv('demo_new.csv')

文件内容:

,0
lhh,男
wcy,女

二、csv读取方式

1.读取操作
#encoding=utf-8
import csv


# 读取csv文件
with open("demo.csv","r",encoding="gbk") as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        print(row)

输出:

['name', 'score', 'age', 'sex']
['lhh', '100', '24', '男']
['wcy', '99', '28', '女']
2.以字典形式进行读取
# 以字典的形式读取
with open("demo.csv","r",encoding="gbk") as file:
    reader = csv.DictReader(file)
    items = list(reader)
    print(items)

输出

[{
    'name': 'lhh', 'score': '100', 'age': '24', 'sex': '男'}, {
    'name': 'wcy', 'score': '99', 'age': '28', 'sex': '女'}]
#指定列读取
filename = ['name','sex']
with open("demo.csv","r",encoding="gbk") as file:
    reader = csv.DictReader(file,filename)
    items = list(reader)
    print(items)

输出:

[{
    'name': 'name', 'sex': 'score', None: ['age', 'sex']}, {
    'name': 'lhh', 'sex': '100', None: ['24', '男']}, {
    'name': 'wcy', 'sex': '99', None: ['28', '女']}]
3.写入操作
# 写入csv文件
with open("demo_new_csv.csv","w") as file:
    writer = csv.writer(file)
    writer.writerow(['name','score'])  # 此时的标题需要以list形式写入,writer会在新建的csv文件中,一行一行写入

文本内容

name,score

以字典方式写入

with open('demo_new_csv.csv', 'w',newline="",encoding="gbk") as f:
    writer = csv.DictWriter(f,fieldnames=["name","score","age","sex"])
    writer.writeheader()
    writer.writerows(items)
    writer.writerow({
    'name': 'lhh', 'score': '100', 'age': '24', 'sex': '男'})

文本内容

name,score,age,sex
lhh,100,24,男
wcy,99,28,女
lhh,100,24,
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38140292/article/details/121130426

智能推荐

leetcode sql题目_leedcode sql-程序员宅基地

文章浏览阅读392次。1 # Write your MySQL query statement belowselect max(salary) as SecondHighestSalary from Employee where salary not in (select max(salary) from Employee )Write a SQL query to get the second hig_leedcode sql

嵌入式软件工程师笔试面试指南-ARM体系与架构_嵌入式工程师笔试面试指南-程序员宅基地

文章浏览阅读1.1w次,点赞74次,收藏324次。嵌入式软件笔试,嵌入式软件面试,程序员简历书写,Linux驱动工程师笔试,Linux驱动工程师面试,BSP工程师笔试,BSP工程师面试,应届生秋招,应届生春招,C/C++笔试题目,C/C++面试题目,C/C++程序员,BSP工程师_嵌入式工程师笔试面试指南

威佐夫博弈 hdu1527 取石子游戏_博弈 分割石子-程序员宅基地

文章浏览阅读800次。传送门:点击打开链接题意:轮流取石子。1.在一堆中取任意个数.2.在两堆中取相同个数。最后取完的人胜利,问先手是否必赢思路:威佐夫博弈博弈,满足黄金分割,且每个数字只会出现一次。具体求法见代码#include#include#include#include#include#include#include#include#include#include#include_博弈 分割石子

python控制蓝牙音响_[ESP32+MicroPython]智能音响控制-程序员宅基地

文章浏览阅读2k次。blinker支持多种智能音响控制,如天猫精灵、百度小度、小米小爱、京东叮咚等。这里以天猫精灵控制为例,blinker DIY支持将设备模拟成三种类型的智能家居:插座、灯、传感器。Blinker支持多种语音助手控制,如天猫精灵、百度小度,本节以天猫精灵控制为例。示例程序及blinker模块天猫精灵基本接入方法通常语音助手都是对特定的设备类型进行支持,确定设备类型后,才能响应对应的语音指令。使用bl..._blinker支持micpython么

(赠源码)python+django+Mysql上课点名系统03391-计算机毕业设计-程序员宅基地

文章浏览阅读112次。对于本上课点名系统的设计来说,它主要是采用后台采用了B/S的结构,它是应用mysql数据库,python等技术动态编程以及数据库进行努力学习和大量实践,并运用到了整个系统的设计当中,具体根据网上上课点名系统的现状来进行开发的,具体根据学生需求实现网上上课点名系统网络化的管理,各类信息有序地进行存储,进入上课点名系统页面之后,方可开始操作主控界面,系统功能包括管理员服务端:后台首页、系统用户(管理员、任课老师、学校领导、班主任、学生注册)、模块管理(课程类别、课程信息、课程签到、公告信息、签到提醒)。

随便推点

Redis实现延迟队列方法介绍-程序员宅基地

文章浏览阅读3.3k次。其中,延迟队列是 Redis 的一个重要应用场景,它被广泛应用于异步任务的调度、消息队列的实现以及秒杀、抢购等高并发场景的处理。在实现延迟队列时,我们可以使用 Redis 的有序集合来保存待执行的任务,其中元素的分值表示任务的执行时间,元素的值表示任务的内容。使用 ZADD 命令将任务添加到有序集合中,将任务的执行时间作为元素的分值,将任务的内容作为元素的值。使用 ZADD 命令将任务添加到有序集合中,将任务的执行时间作为元素的分值,将任务的内容作为元素的值。一、Redis 有序集合实现延迟队列。

Python入门实战:Python的文件操作-程序员宅基地

文章浏览阅读701次,点赞23次,收藏7次。1.背景介绍Python是一种强大的编程语言,它具有简洁的语法和易于学习。Python的文件操作是一种常用的编程技术,可以让程序员更方便地读取和写入文件。在本文中,我们将深入探讨Python的文件操作,涵盖了核心概念、算法原理、具体操作步骤、数学模型公式、代码实例以及未来发展趋势。1.1 Python的文件操作背景Python的文件操作是一种基本的编程技能,它允许程序员在程序中读取和写...

机器学习模型对比_机器学习的模型比较-程序员宅基地

文章浏览阅读1k次。1.SVM和LR(逻辑回归)1.1 相同点都是线性分类器。本质上都是求一个最佳分类超平面。都是监督学习算法。 都是判别模型。通过决策函数,判别输入特征之间的差别来进行分类。常见的判别模型有:KNN、SVM、LR。 常见的生成模型有:朴素贝叶斯,隐马尔可夫模型。1.2 不同点损失函数不同,LR的损失函数为交叉熵;svm的损失函数自带正则化,而LR需要在损失函数的基础上加上正则化。 两个模型对数据和参数的敏感程度不同。SVM算法中仅支持向量起作用,大部分样本的增减对模型无影响;而L_机器学习的模型比较

纯C语言完整代码操作单链表(初始化、插入、删除、查找...)-程序员宅基地

文章浏览阅读901次,点赞3次,收藏10次。C语言操作单链表

实战打靶集锦-027-SoSimple1_sosimple 写入试验场-程序员宅基地

文章浏览阅读1.6k次,点赞32次,收藏47次。本文简单记录了博主的一次打靶经历,涉及wordpress扫描与爆破、social-warfare远程代码执行漏洞、sudo命令提权等_sosimple 写入试验场

用opencv的dnn模块做yolov5目标检测_opencv yolov5-程序员宅基地

文章浏览阅读7w次,点赞271次,收藏1.1k次。最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的。于是,我就想着编写一套用opencv的dnn模块做yolov5目标检测的程序。在编写这套程序时,遇到的bug和解决办法,在这篇文章里讲述一下。在yolov5之前的yolov3和yolov4的官方代码都是基于darknet框架的实现的,因此opencv的dnn模块做目标检测时,读取的是.cfg和.weight文件,那时候编写程序很顺畅,没有遇到bug。但是yolo_opencv yolov5