在做数据处理,数据分析的时,经常将读取的数据转换为相应的处理形式,使用read_csv和to_csv便是不错的选择,read_csv()是pandas的方法,to_csv()是DataFrame类的方法。pandas读写文件,处理数据的效率比较高,所以尽量使用pandas进行输出。
1.to_csv
pandas to_csv可以向已经存在的具有相同结构的csv文件增加dataframe数据。to_csv()方法mode默认为w,我们加上mode=‘a’,便可以追加写入数据。
import pandas as pd
my_list = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16],
[17,18,19,20]]
df = pd.DataFrame(
my_list,
index = ["1->", "2->", "3->", "4->", "5->"],
columns = ["A", "B", "C", "D"]
)
df.to_csv('my_csv.csv')
'''添加DataFrame数据到已存在的csv文件中'''
my_list = [[1,2,3,4],
[5,6,7,8],
]
df = pd.DataFrame(
my_list,
index = ["6->", "7->"],
columns = ["A", "B", "C", "D"]
)
df.to_csv('my_csv.csv', mode='a', header=False)
2.read_csv
(1)读取csv文件到DataFrame,操作如下:
df=pd.read_csv('my_csv.csv', header=0) #header=0,表示文件第0行(即第一行,索引从0行开始)为列索引
print(df)
print(df.shape)
#header,将行号用作列名,且是数据的开头。header=None,即指明原始数据没有列索引,这样自动加上列索引,header=0,表示文件第0行(即第一行,索引从0行开始)为列索引。
Unnamed: 0 A B C D
0 1-> 1 2 3 4
1 2-> 5 6 7 8
2 3-> 9 10 11 12
3 4-> 13 14 15 16
4 5-> 17 18 19 20
5 6-> 1 2 3 4
6 7-> 5 6 7 8
Unnamed索引号是Panda在加载csv文件自动生成的。
第一种解决方案是:不存索引,即df.to_csv(‘my_csv.csv’,index=False)
第二种解决方案是:声明文件第一列为索引,第一行为列名。即df=pd.read_csv(‘my_csv.csv’, header=0,index_col=0)
(2)读取csv文件,不包括掉行索引以及列索引,操作如下:
df=pd.read_csv('my_csv.csv', header=0,index_col=0).values #header=0,表示文件第0行(即第一行,索引从0行开始)为列索引。index_col=0,表示文件第0列为行索引。
print(df)
print(df.shape)
输出结果为:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]
[17 18 19 20]
[ 1 2 3 4]
[ 5 6 7 8]]