前言:
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
获取列名称:
csvCol=df.columns
print(csvCol)
print("csvCol type: {}".format(type(csvCol)))
获取数据规模:
dimensison=df.shape
print(dimensison)
print("dimensison type: {}".format(type(dimensison)))
可以看到返回的是一个数据矩阵的大小, 与C++格式相同, 也是 [行数] [列数]
获取数据:
获取一整列:
col1=df["ds"]
# col2=df["y"]
print(col1)
print("col1 type : {}".format(type(col1)))
获取具体数据:
在获取一整列的基础上:
col1=df["ds"]
for i in range(10):
print(col1[i])
print("col1[0] type : {}".format(type(col1[0])))
可以看到经过一次解析之后已经是具体数据了
或者通过单元访问解决:
data=df["ds"][1]
print(data)
print("data type: {}".format(type(data)))
注意这里的索引是从0开始的
数据修改与保存:
col1=df["ds"]
col1[0]="WDNMD"
print(col1[0])
df.to_csv(csvPath, encoding="utf_8_sig")
这里在读取的基础上直接修改会出现这种东西:
简而言之就是修改了一个拷贝, 这种情况尽量不要出现
要修改原始数据需要避免链式索引:
print(df.loc[1, "ds"])
df.loc[1, "ds"] = "WDNMD"
df.to_csv(csvPath, encoding="utf_8_sig")
这里的loc索引顺序与上头相反, 为行, 列索引, 并且也是忽略表头, index=0即为数据第一项
可以看到这样修改之后就不报错了
但保存下来的文件会有个问题, 多了一行ID:
通过添加这个解决:
print(df.loc[1, "ds"])
df.loc[1, "ds"] = "WDNMD"
df.to_csv(csvPath, encoding="utf_8_sig", index=0)
创建新的数据表:
这里主要使用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
以便于编码 & 后续使用