pandas模块学习
一、背景概述
Pandas (Python Data Analysis Library) 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
numpy更加适用于科学计算领域;而pandas最初据说是设计用于金融领域,因此pandas可能更加适用于各类实际应用场景的处理。另一方面,numpy适用于处理“干净”的数据,及规范、无缺失的数据,而pandas更加擅长数据清洗(data munging),这为后一步数据处理扫清障碍。
Excel 可以处理少量的数据,但是当我们用爬虫收集到很多的数据的时候,此时就需要pandas模块进行处理
Pandas中的三种Python数据结构
- Series:一堆数组。与Python标准的数据结构List列表很像
- DataFrame:二维的表格型数据结构。可以理解为Serise容器
- Panel:三维数组,可以理解为DataFrame容器
Pandas支持的数据类型
- data1=pandas.read_html(‘1.html’)
- data2=pandas.read_json(‘2.json’)
- data3=pandas.read_csv(‘3.csv’)
二、Series
一维数据结构,键值对
用法:
pandas.Series(data,index,dtype,copy)
- data 数据采取各种形式
- index 索引值必须是唯一的和散列的,与数据长度相同。默认np.arange(n),如果没有索引被传递
- dtype 用户数据类型。如果没有,将推断数据类型
- copy 复制数据,默认为false
import pandas
if __name__ == '__main__':
data=['apple','male','chiken0']
data1=pandas.Series(data)
data2=pandas.DataFrame()
#data3=pandas.Panel()
print(data1)
import pandas
if __name__ == '__main__':
data=pandas.Series()
print(type(data))
#print(data)
import pandas
if __name__ == '__main__':
data={'name':'小王','age':'18'}
print(pandas.Series(data))
print(pandas.Series(data)['name'])
三、DataFrame
二维数据结构,数据以行和列的表格的形式排列,可以结合xlwt模块处理excel表格 (想办法怎么把字典转换为列表格式)
用法:
pandas.DataFrame(data,index,columns,dtype,copy)
- data 数据采取各种形式
- index 对于行标签,要用于结果帧的索引是可选缺醒值 np.arange(n),如果没有索引被传递
- columns 对于列标签,可选的默认语法是 np.arange(n) 这只是在没有索引传递情况下才是这样
- dtype 每列的数据类型
- copy 复制数据,默认为false
写入 .xls 文件
写入 xls文件的两种方式
方法1:
write_xls(sheetname,data1,path) # data1 是列表方法2:
df.pandas.DataFrame(data1) # data 是列表
df.to_excel(‘test.xls’)
import pandas
import xlwt
def write_xls(sheet_name,value,path):
index=len(value)
xls=xlwt.Workbook() #创建xls文件
table0 = xls.add_sheet(sheet_name) #创建一个表格
for i in range(0,index): #写入数据
for j in range(0,len(value[i])):
table0.write(i,j,value[i][j])
xls.save(path)
if __name__ == '__main__':
data1=[['id','001'],['name','dog'],['age',5]]
#sheetname='test_sheet'
#path='test.xls'
df=pandas.DataFrame(data1)
df.to_excel('test.xls')
#write_xls(sheetname,data1,path)
DataFrame 数据的读取
从字典创建一个序列必须有 index=
import pandas
if __name__ == '__main__':
data={'id':'001','name':'dog','age':'3',
'id2':'002','name2':'cat','age2':'2'} #创建一个字典
df=pandas.DataFrame(data,index=[111]) #将上面data数据,标记为 111行
print(df['name'])
print('-'*20)
print(df.iloc[0]) #打印第一行的数据
print('-'*20)
print(df.loc[111]) #打印出 行名是111 的那行数据
参考
https://everyang.net/wp-content/uploads/2018/04/Pandas01-everyang.pdf