代填的坑
- 如何把路径变成可输入的
- 解决增加列部分的疑问
一、Pandas库对Excel文件进行增删改查
1、导入库
import pandas as pd
import numpy as np
import xlwt
import xlrd
2、读Excel文件内容
# 读
df1 = pd.DataFrame(pd.read_excel('MyExcel.xls'))
print(df1)
MyExcel文件打开后如下:
终端输出如下:
3、写Dataframe
# 写入
df = pd.DataFrame({
"id": [1001, 1002, 1003, 1004, 1005, 1006],
"date": pd.date_range('20130102', periods=6),
"city": ['Zhengzhou', 'KF', 'SH', 'TJ', 'Beijing', 'HN'],
"age": [1, 2, 3, 4, 5, 6],
"category": ['100-A', '100-B', '110-A', '110-B', '110-C', '222-P'],
"price": [1200, np.nan, 2133, 2312, np.nan, 2223]},
columns=["id", "date", "city", "age", "category", "price"])
print(df)
终端输出:
4、改
# 修改 不修改原来的Excel文件 这里修改的是我创建的df
# df['id'][0] = 2333 # 会报错:SettingWithCopyWarning
df.loc[0, 'id'] = 2333 # 行-列
df.loc[4, 'age'] = 18
# df['price'][2] = 8888
df.iloc[0, 5] = 8888 # 行-列
print(df)
终端输出:
5、增【增加列部分有疑问】
个体:
# 增加个体
df.loc[999, 'age'] = 555 # 行不存在 列存在 创建行
df.loc[333, '5'] = 222 # 行不存在 列不存在 创建行列
df.loc[3, 'try'] = 111 # 行存在 列不存在 创建列
print(df)
终端输出:
行数据:
# 行数据
df.loc[8888] = [1, 2, 3, 4, 5, 6]
# df.iloc[6] = [3, 3, 3, 3, 2, 2] # 用iloc无法生成 只能修改
print(df)
列数据:
# 列数据
# 【疑问】为什么只能生成到6.0
df['增加列'] = pd.Series([1, 2, 3, 4, 5, 6, 7], index=np.arange(0, 7))
print(df)
6、删除
1、删除列
# 指定列 用axis=1
df = df.drop('age', axis=1)
print(df)
2、删除行
# 指定行 用axis=0
df = df.drop(3, axis=0)
print(df)
7、保存
# 保存
pd.DataFrame(df).to_excel('test01.xls', sheet_name="MySheet", index=False, header=True)
完整代码:
import pandas as pd
import numpy as np
import xlwt
import xlrd
df1 = pd.DataFrame(pd.read_excel('MyExcel.xls'))
print(df1)
# 修改值,但不修改原理的Excel文件
# df[2][1] = "哈哈哈"
# df[6][2] = "我真棒"
# print(df)
# 写入
df = pd.DataFrame({
"id": [1001, 1002, 1003, 1004, 1005, 1006],
"date": pd.date_range('20130102', periods=6),
"city": ['Zhengzhou', 'KF', 'SH', 'TJ', 'Beijing', 'HN'],
"age": [1, 2, 3, 4, 5, 6],
"category": ['100-A', '100-B', '110-A', '110-B', '110-C', '222-P'],
"price": [1200, np.nan, 2133, 2312, np.nan, 2223]},
columns=["id", "date", "city", "age", "category", "price"])
print(df)
# 修改 不修改原来的Excel文件
# df['id'][0] = 2333 # 会报错:SettingWithCopyWarning
df.loc[0, 'id'] = 2333 # 行-列
df.loc[4, 'age'] = 18
# df['price'][2] = 8888
df.iloc[0, 5] = 8888 # 行-列
print(df)
# 增加
# 增加个体
# df.loc[999, 'age'] = 555 # 行不存在 列存在 创建行
# df.loc[333, '5'] = 222 # 行不存在 列不存在 创建行列
# df.loc[3, 'try'] = 111 # 行存在 列不存在 创建列
# print(df)
# 行数据
df.loc[8888] = [1, 2, 3, 4, 5, 6]
# df.iloc[6] = [3, 3, 3, 3, 2, 2] # 用iloc无法生成 只能修改
print(df)
# 列数据
# 【疑问】为什么只能生成到6.0
df['增加列'] = pd.Series([1, 2, 3, 4, 5, 6, 7], index=np.arange(0, 7))
print(df)
# 删除
# 指定列 用axis=1
df = df.drop('age', axis=1)
print(df)
# 指定行 用axis=0
df = df.drop(3, axis=0)
print(df)
# 保存
pd.DataFrame(df).to_excel('test01.xls', sheet_name="MySheet", index=False, header=True)
二、Pandas库对Csv文件进行增删改查
pandas——对csv文件进行增加列、删除列、删除行、修改、查找重复等系列操作
pandas——对csv文件进行增加列、删除列、删除行、修改、查找重复等系列操作
pandas对CSV文件数据操作增删改查
1、创建Csv文件
1.1 用记事本创建
但是用Excel打开会乱码
1.2 用Excel表创建
点击另存为
不会乱码!!
2、增删改查
pandas的to_csv()使用方法
pandas——对csv文件进行增加列、删除列、删除行、修改、查找重复等系列操作