python读写CSV文件

前言:

csv & tsv作为常用的python数据文件, 美赛中很可能需要处理

所以这里也学一下使用

pandas

这里使用pandas库对csv文件进行操作, 更为方便一点

import pandas as pd

基本上都是这样其别名的

读取csv:

df = pd.read_csv(r'D:\IDM Download\prophet-master\prophet-master\examples\example_wp_log_peyton_manning.csv')

后头使用的基本上都是绝对地址

返回一个dataFrame类型的变量

之后使用这个变量完成所有操作

简单输出

# 读入数据集
df = pd.read_csv(r'D:\IDM Download\prophet-master\prophet-master\examples\example_wp_log_peyton_manning.csv')
df.head()
print(df.head())
print(type(df.head()))
print(df.tail())
  • head输出前n行数据, 直接print即可

    默认n=5

  • tail() 则相反, 输出最后的n条数据

    默认n=5

image-20210202225436282

image-20210202225521150

image-20210202225711907

获取列名称:

csvCol=df.columns
print(csvCol)
print("csvCol type: {}".format(type(csvCol)))

image-20210202230305944

image-20210202230318532

获取数据规模:

dimensison=df.shape
print(dimensison)
print("dimensison type: {}".format(type(dimensison)))

可以看到返回的是一个数据矩阵的大小, 与C++格式相同, 也是 [行数] [列数]

image-20210202232316903

image-20210202232323525

获取数据:

获取一整列:

col1=df["ds"]
# col2=df["y"]
print(col1)
print("col1 type : {}".format(type(col1)))

image-20210202232938286

获取具体数据:

在获取一整列的基础上:

col1=df["ds"]
for i in range(10):
    print(col1[i])
print("col1[0] type : {}".format(type(col1[0])))

可以看到经过一次解析之后已经是具体数据了

image-20210202233029856

或者通过单元访问解决:

data=df["ds"][1]
print(data)
print("data type: {}".format(type(data)))

注意这里的索引是从0开始的

image-20210202234720897

image-20210202234728174

数据修改与保存:

col1=df["ds"]

col1[0]="WDNMD"
print(col1[0])
df.to_csv(csvPath, encoding="utf_8_sig")    

这里在读取的基础上直接修改会出现这种东西:

简而言之就是修改了一个拷贝, 这种情况尽量不要出现

image-20210202234143734

要修改原始数据需要避免链式索引:

print(df.loc[1, "ds"])
df.loc[1, "ds"] = "WDNMD"
df.to_csv(csvPath, encoding="utf_8_sig")

这里的loc索引顺序与上头相反, 为行, 列索引, 并且也是忽略表头, index=0即为数据第一项

可以看到这样修改之后就不报错了

image-20210202235305823

但保存下来的文件会有个问题, 多了一行ID:

image-20210202235343513

image-20210202235355852

通过添加这个解决:

print(df.loc[1, "ds"])
df.loc[1, "ds"] = "WDNMD"
df.to_csv(csvPath, encoding="utf_8_sig", index=0)

image-20210202235654378

创建新的数据表:

这里主要使用pandas.DataFrame实现:

newCsvPath = r"D:\pyCharm\projects\trainSum.csv"
newDataFile=pd.DataFrame([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7]],
                         index=list('1234'), columns=list('ABCD'))
newDataFile.to_csv(newCsvPath)

之后的数据处理, 如果需要新增列的话, 还是推荐生成新的csv

以便于编码 & 后续使用

image-20210203130619044

image-20210203130532593

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值