pandas生成
- pandas是基于Numpy的开源数据分析工具,提供了快速,灵活,明确的数据结构【学过c就有了解,没学过那搜一下?不好赘述】,旨在简单,直观的处理关系型,标记型数据。
- pandas中常用Series,DataFrame,Panel对应一维二维和三维,这里咱们用二维
【在网上看到 pandas 读取写入excel时是通过read_excel,to_excel方法,需要xlrd库和xlwt库 而ExcelWrite方法需要openpyxl库;下载pandas前先下载了前三个,所以没法实验此需求的真假性,写到这的时候还没有安装前三个库的,可以验证一下,如果能告诉我就更好了】
DF的数据会有index和columns【行标签,列标签】,均默认从0开始
df=pd.DataFrame(data=ayy,columns=title)#这里设置了columns,没有设置index,那么index就从0开始 ,看上图
df.to_excel(path,index=False)#to_excel写入excel,这里的index不是DF中的意思,是表示在生成的excel表中是否含有行标签【序号】
import pandas as pd
title=['工号','姓名','性别','出生','部门']
array1 = ['1', '许佳琪', '男', '19990824', "IS"]
array2 = ['2', 'c', '女', '19980615', 'CX']
array3 = ['3', '张鹏辉', '男', '19990621', 'II']
ayy = [array1, array2, array3]
path = 'D:\\A\\test-pandas.xlsx'
df=pd.DataFrame(data=ayy,columns=title)
# print(df)
df.to_excel(path,index=False)
print('创建|覆盖 成功')
打开生成的表时,在运行程序会报PermissionError: [Errno 13] Permission denied错误
pandas读取
data=pd.read_excel(path,sheet-name,header,usecols,names,)
- path:路径
- sheet-name:整数(>=0)或字符串,【0访问第一个sheet...】【字符串访问该名称的sheet】
- header:空值或整数(>=0)【空值表示excel表中没有列表签】【将整数行作为列表签,该行之前不计入数据,header=0默认值】
- usecols:空值或list[整数(columns>usecols>0)或字符串]【空值默认值显示所有列】【list类型的位置或者字符串标题】【设置该属性会标黄】
- 当表内没有标题时,且header=None时,可以用names=['1','2',...]设置列标题【注意从最后一个元素对应最后一列】
# print('index属性值是:\n',data.index)#默认index为从0开始
# print('每列的标题:\n',data.columns)
# print('dtypes属性值是:\n',data.dtypes)#按列看
# print('二维列表:\n',data.values)
# print('df的维度是:',data.ndim)
# print('df占的单元格是:',data.size)
# print('df行与列:',data.shape)
# rows,cols=data.shape#返回一个元组,这里是直接将元组的第一个元素赋给rows,第二个元素赋给了cols
# print('总行数{},总列数{}'.format(rows,cols))
import pandas as pd
#保存的文件
path = 'D:\\A\\test-pandas.xlsx'
data=pd.read_excel(path,0',)
print(data)
rows,cols=data.shape
for i in range(rows):
print(data.iloc[i].values)#不加value返回的是Series类型,不便于使用
print('读取完成')
补充一下pandas访问数据的方法
DF[列标签] 访问列
DF.iloc[行,列] 按照位置索引,列可以省略,省略后为所有列,可以进行区域访问
所以访问多行时,是两个方括号
DF.loc[行,列] 按照标签名索引,列可以省略,省略后为所有列,没有标签名时,不能使用
上述返回的均是Series类型【一行或一列】或DF类型【多行或多列】
<class 'pandas.core.series.Series'>
<class 'pandas.core.frame.DataFrame'>
import pandas as pd
title=['工号','姓名','性别','出生','职位']
array1 = ['1', '许佳琪', '男', '19990824', "IS"]
array2 = ['2', 'c', '女', '19980615', 'CX']
array3 = ['3', '张鹏辉', '男', '19990621', 'II']
ayy = [array1, array2, array3]
data=pd.DataFrame(data=ayy,columns=title)
print('位置索引')
print(data.iloc[0])#访问单行,返回Series
print(data.iloc[0,:])#等同于上一行
print(data.iloc[[0,2]])#访问多行,返回DF
print('标签索引')
data.index=['zero','one','two']
print(data,'\n')
print(data.loc['one'])#访问单行,返回Series
print(data.loc[['zero','one']])#访问多行
print(data['工号'])#访问单列
print(data[['姓名','职位']])#访问多列
print('区域索引')
print(data.iloc[:2,:2])
print('单元格:',data.loc['zero','姓名'])
print(data.iloc[[0,2],[1,4]])
print(data.loc[['zero','two'],['姓名','职位']])