目录
3.1 二维列表切片,不能直接按列取值,要先将行用for循环提取出来
4 pandas处理DataFrame类型数据(csv文件读取为DataFrame类型)
5 pandas报DataFrame object has no attribute 'as_matrix'解决办法
1 Python读取Excel内容
1.1 pandas读取
总结:pandas读取Excel内容为dict类型,每一个表为DataFrame类型。
1.2 xlrd读取Excel内容
报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported
总结:xlrd读取Excel内容为Book类型,每一个表为Sheet类型。
2 将读取的数据转换为list类型便于切片处理
2.1 DataFrame类型转换为list类型
注意:在切分子表时,DataFrame类型的iloc方法更便捷,之后再转换为list类型进行更复杂的切片。
2.2 Sheet类型转换为list类型
3 列表的操作方法
3.1 二维列表切片,不能直接按列取值,要先将行用for循环提取出来
3.2 enumerate()函数同时获得索引和值
3.3 continue终止当前循环继而执行下次循环
3.4 深复制生成列表
A = [[None] for i in range(lenth_you_want)]
3 list存为csv文件,读取csv文件
总结:
(1)原始数据加上列索引和行索引(列名和行名)再保存
list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
name = ['one', 'two', 'three']
name2 = ['a', 'b', 'c']
test = pd.DataFrame(columns=name, index=name2, data=list) #加上列名和行名
print(test) #打印列名和行名
test.to_csv('./testcsv.csv') #直接保存
data1 = pd.read_csv("./testcsv.csv", header=0, index_col=0) #指定列名和行名位置
(2)原始数据直接保存
test = pd.DataFrame(data=list) #直接转换成DataFrame类型
print(test) #打印会出现默认的从0开始的列和行索引,保存时则不含
test.to_csv('./testcsv1.csv', header=None, index=False) #无列索引和行索引保存
data2 = pd.read_csv("./testcsv1.csv", header=None) #无列索引,行索引默认为0开始的数字
4 pandas处理DataFrame类型数据(csv文件读取为DataFrame类型)
总结:这里发现直接用pandas处理DataFrame类型数据也可以,没必要转换成list类型。
5 pandas报DataFrame object has no attribute 'as_matrix'解决办法
6 pandas操作
6.1 根据条件获取元素所在的位置(索引)
df = pd.DataFrame({'BoolCol': [1, 2, 3, 3, 4],'attr': [22, 33, 22, 44, 66]},
index=[10,20,30,40,50])
print(df)
a = df[(df.BoolCol==3)&(df.attr==22)].index.tolist()
print(a)