python读写数据读写csv文件(pandas用法)


Posted in Python onDecember 14, 2020

python中数据处理是比较方便的,经常用的就是读写文件,提取数据等,本博客主要介绍其中的一些用法。Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。

一、pandas读取csv文件

数据处理过程中csv文件用的比较多。

import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')

下面看一下pd.read_csv常用的参数:

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

常用参数解释:read_csv与read_table常用的参数(更多参数查看官方手册):

filepath_or_buffer #需要读取的文件及路径
sep / delimiter 列分隔符,普通文本文件,应该都是使用结构化的方式来组织,才能使用dataframe
header 文件中是否需要读取列名的一行,header=None(使用names自定义列名,否则默认0,1,2,...),header=0(将首行设为列名)
names 如果header=None,那么names必须制定!否则就没有列的定义了。
shkiprows= 10 # 跳过前十行 
nrows = 10 # 只去前10行 
usecols=[0,1,2,...] #需要读取的列,可以是列的位置编号,也可以是列的名称
parse_dates = ['col_name'] # 指定某行读取为日期格式 
index_col = None /False /0,重新生成一列成为index值,0表示第一列,用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数宇组成的列表(层次化索引)
error_bad_lines = False # 当某行数据有问题时,不报错,直接跳过,处理脏数据时使用 
na_values = 'NULL' # 将NULL识别为空值
encoding='utf-8' #指明读取文件的编码,默认utf-8

读取csv/txt/tsv文件,返回一个DataFrame类型的对象。

举例:

python读写数据读写csv文件(pandas用法)

import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data)

  name age    birth
0  zhu  20  2000.1.5
1  wang  20  2000.6.18
2 zhang  21 1999.11.11
3  zhu  22 1998.10.24

pandas用iloc,loc提取数据

提取行数据:

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第2行的数据)

import pandas as pd
import numpy as np
#创建一个Dataframe
data = pd.DataFrame(np.arange(16).reshape(4, 4), index=list('abcd'), columns=list('ABCD'))
print(data)

  A  B  C  D
a  0  1  2  3
b  4  5  6  7
c  8  9 10 11
d 12 13 14 15

loc提取'a'的行:

print(data.loc['a'])

A  0
B  1
C  2
D  3
Name: a, dtype: int32

iloc提取第2行:

print(data.iloc[2])

A   8
B   9
C  10
D  11
Name: c, dtype: int32

提取列数据

print(data.loc[:, ['A']])#取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]

  A
a  0
b  4
c  8
d 12
print(data.iloc[:, [0]])

  A
a  0
b  4
c  8
d 12

提取指定行,指定列

print(data.loc[['a','b'],['A','B']]) #提取index为'a','b',列名为'A','B'中的数据

  A B
a 0 1
b 4 5
print(data.iloc[[0,1],[0,1]]) #提取第0、1行,第0、1列中的数据

  A B
a 0 1
b 4 5

提取所有行所有列:

print(data.loc[:,:])#取A,B,C,D列的所有行
print(data.iloc[:,:])

  A  B  C  D
a  0  1  2  3
b  4  5  6  7
c  8  9 10 11
d 12 13 14 15

根据某个指定数据提取行

print(data.loc[data['A']==0])#提取data数据(筛选条件: A列中数字为0所在的行数据)

  A B C D
a 0 1 2 3

二、pandas写入csv文件

pandas将多组列表写入csv

import pandas as pd

#任意的多组列表
a = [1,2,3]
b = [4,5,6]  

#字典中的key值即为csv中列名
dataframe = pd.DataFrame({'a_name':a,'b_name':b})

#将DataFrame存储为csv,index表示是否显示行名,default=True
dataframe.to_csv("test.csv",index=False,sep=',')

结果:

python读写数据读写csv文件(pandas用法)

如果你想写入一行,就是你存储的一个列表是一行数据,你想把这一行数据写入csv文件。

这个时候可以使用csv方法,一行一行的写

import csv

with open("test.csv","w") as csvfile: 
  writer = csv.writer(csvfile)

  #先写入columns_name
  writer.writerow(["index","a_name","b_name"])
  #写入一行用writerow
  #write.writerow([0,1,2])
  #写入多行用writerows
  writer.writerows([[0,1,3],[1,2,3],[2,3,4]])

python读写数据读写csv文件(pandas用法)

可以看到,每次写一行,就自动空行,解决办法就是在打开文件的时候加上参数newline=''

import csv

with open("F:/zhu/test/test.csv","w", newline='') as csvfile:
  writer = csv.writer(csvfile)

  #先写入columns_name
  writer.writerow(["index","a_name","b_name"])
  #写入多行用writerows
  writer.writerows([[0,1,3],[1,2,3],[2,3,4]])

python读写数据读写csv文件(pandas用法)

写入txt文件类似

(1)创建txt数据文件,创建好文件记得要关闭文件,不然读取不了文件内容

(2)读取txt文件

#读取txt文件
file=open("G:\\info.txt",'r',encoding='utf-8')
userlines=file.readlines()
file.close()
for line in userlines:
  username=line.split(',')[0] #读取用户名
  password=line.split(',')[1] #读取密码
  print(username,password)

三、pandas查看数据表信息

1)查看维度:data.shape

import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data)
print(data.shape)

  index a_name b_name
0   0    1    3
1   1    2    3
2   2    3    4
(3, 3)

2)查看数据表基本信息:data.info

import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data)
print(data.info)

  index a_name b_name
0   0    1    3
1   1    2    3
2   2    3    4
<bound method DataFrame.info of  index a_name b_name
0   0    1    3
1   1    2    3
2   2    3    4>

3)查看每一行的格式:data.dtype

import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data.dtypes)

index   int64
a_name  int64
b_name  int64
dtype: object

4)查看前2行数据、后2行数据

df.head() #默认前10行数据,注意:可以在head函数中填写参数,自定义要查看的行数
df.tail() #默认后10 行数据
import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data)
print(data.head(2))
print(data.tail(2))

  index a_name b_name
0   0    1    3
1   1    2    3
2   2    3    4
  index a_name b_name
0   0    1    3
1   1    2    3
  index a_name b_name
1   1    2    3
2   2    3    4

四、数据清洗

1)NaN数值的处理:用数字0填充空值

data.fillna(value=0,inplace=True)

注意:df.fillna不会立即生效,需要设置inplace=True

2)清除字符字段的字符空格

字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉

data['customername']=data['customername'].map(str.strip)#如清除customername中出现的空格

3)大小写转换

data['customername']=data['customername'].str.lower()

4)删除重复出现的值

data.drop_duplicates(['customername'],inplace=True)

5)数据替换

data['customername'].replace('111','qqq',inplace=True)

参考:

《Python之pandas简介》
《Pandas中loc和iloc函数用法详解(源码+实例) 》

到此这篇关于python读写数据读写csv文件(pandas用法)的文章就介绍到这了,更多相关python读写csv内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
python实现微信防撤回神器
Apr 29 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
python框架flask表单实现详解
Nov 04 Python
基于python中__add__函数的用法
Nov 25 Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 Python
python统计字符串中字母出现次数代码实例
Mar 02 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 #Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 #Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 #Python
Python实现Kerberos用户的增删改查操作
Dec 14 #Python
python-地图可视化组件folium的操作
Dec 14 #Python
python多线程和多进程关系详解
Dec 14 #Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 #Python
You might like
PHP 数字左侧自动补0
2008/03/31 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python开发简易版在线音乐播放器
2017/03/03 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python实现手机销售管理系统
2019/03/19 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
数学系个人求职信范文
2014/01/30 职场文书
学生安全责任书
2014/04/15 职场文书
体育活动总结范文
2014/05/04 职场文书
产品销售计划书
2014/05/04 职场文书
升学宴学生致辞
2015/07/27 职场文书
孩子满月酒答谢词
2015/09/30 职场文书