python读写数据读写csv文件(pandas用法)
- 格式:pdf
- 大小:118.61 KB
- 文档页数:5
python读写数据读写csv⽂件(pandas⽤法)
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类型的对象。
举例:
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=',')
结果:
如果你想写⼊⼀⾏,就是你存储的⼀个列表是⼀⾏数据,你想把这⼀⾏数据写⼊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]])
可以看到,每次写⼀⾏,就⾃动空⾏,解决办法就是在打开⽂件的时候加上参数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]])
写⼊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)查看数据表基本信息:
import pandas as pd
data = pd.read_csv('F:/Zhu/test/test.csv')
print(data)
print()
index a_name b_name
0 0 1 3
1 1
2 3
2 2
3 4
<bound method 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读写数据读写csv⽂件(pandas⽤法)的⽂章就介绍到这了,更多相关python读写csv内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。