pandas
创建文件
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索引)
set_index( ) 将 DataFrame 中的列转化为行索引。默认的,当列变成行索引之后,原来的列就没了,但是可以通过设置drop来保留原来的列。
to_excel()函数用于将DataFrame导出到excel文件。
import pandas as pd
df = pd.DataFrame({'ID':[1,2,3],'Name':['Tim','Victor','Nick']})
df = df.set_index('ID')
df.to_excel('E:/pandas/output.xlsx')
print('Done!')
读取文件
read_excel函数用来读取pandas的数据
shape(a,b):查看矩阵或者数组的维数,第一维表示长度为a,第二维表示长度维b。
columns参数用于获取dataframe各列的表头名,也可以用于修改列名。
head函数默认是取出前5行数据,如果想要输出指定数据,可以在函数中指定数据。
tail方法默认显示数据集的后5行,也可以指定数据。
import pandas as pd
people = pd.read_excel('E:/pandas/output.xlsx')
print(people.shape)
print(people.columns)
print(people.head())
print(people.tail())
header:设置表头,当第一行为字符,则第一行数据默认为标题;当第一行与其他数据类型相同时,也会把第一行当作表头,所以无表头时应设置header=None,当有表头时,设置header=0,则第一行数据为表头。若设置header=1,则第二行数据默认为表头。
import pandas as pd
people =
pd.read_excel('E:/pandas/output.xlsx',header=1)
print(people.columns)
inplace参数为True时,不创建新的对象,直接对原始对象进行修改;为False时对数据进行修改,创建并返回新的对象承载其修改结果。
peole.set_index('ID',inplace=True)
index_col用来指定表格的索引值。如果文件格式不正确,可以考虑使用index_col=false强制pandas不适用第一列作为索引。在使用None的时候,会自动将第一列作为索引,并额外添加一列。所以大多我们会使用index_col=0,直接将第一列作为索引,不额外添加列。如果知道某个数据为某一列可以直接指定。
import pandas as pd
df = pd.read_excel('E:/pandas/output.xlsx',index_col='ID')
df.to_excel('E:/pandas/output2.xlsx')
print('Done!')
行,列,单元格
keys()函数用于返回pandas对象的信息轴,返回列表中的键。
values()函数用于返回对应的二维NumPy值数组,返回列表中的值。
index()函数用于查询数据
series是一组带标签数组,即由一组数据和与之相关的标签组成的一维数据对象。与list以及numpy中array相似,但list中元素可以为不同数据类型,而另外两者只能为相同数据类型。series类型包括(index,values)两部分。
import pandas as pd
d = {'x':100,'y':200,'z':300}
print(d.keys())
print(d.values())
print(d['x'])
print(pd.Serise(d))
print(pd.Serise(d).index)
import pandas as pd
s1 = pd.Series([100,200,300],index=['x','y','z'])
print(s1)
import pandas as pd
s1 = pd.Series([1,2,3],index=[1,2,3],name='A')
s2 = pd.Series([10,20,30],index=[1,2,3],name='B')
s3 = pd.Series([100,200,300],index=[1,2,3],name='C')
df = pd.DareFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)
#name是每一列的名称,index每一行的名称。
#要以字典的方式输出,如果以列表方式输出则名称会出现混乱。
数字区域读取,填充数字
skiprows=3跳过前三行。usecols读取指定的列
at可以给某行某列赋值
dtype:设置数组元素类型
datetime.date - 表示日期的类,常用属性:year, month, day
datetime.timedelta - 表示时间间隔,即两个时间点(date,time,datetime)之间的长度
import pandas as pd
books = pd.read_excel('E:/pandas/output.xlsx',skiprows=3,usecols='C:F',index_col=None)
print(books)
import pandas as pd
books=pd.read_excel('E:/pandas/output.xlsx',index_col=None)
books['ID'].at[0]=100
print(books['ID'])
import pandas as pd
from datetime import date,timedelta
books=pd.read_excel('E:/pandas/output.xlsx',skiprows=3,usecols='C:F',index_col=None,dtype={'ID':str,'inStore':str,'Date':str})
start = date(2018,1,1)
for i in books.index:
books['ID'].at[i]=i+1
books['inStore'].at[i]='Yes'if i%2 ==0 else 'No'
#如果i%2==0则输出yes,否则输出no
books['Date'].at[i] = start
print(books)
填充日期序列
timedelta在此处用于添加天数
date在此也用于添加年月日
books['Date'].at[i]=start + timedelta(days=i)
books['Date'].at[i]=date(start.year + i,start.month,start.day)
#at方法找值
books.at[i,'ID'] = i+1
books.at[i,'InStore']='Yes'if i%2 == 0 else 'No'
函数填充,计算列
apply()当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数。
import pandas as pd
books = pd.read_excel('E:/pandas/output.xlsx',index_col='ID')
books['price']=books['listprice']*books['discount']
#price这列的值等于listprice这列的值乘于discount这列的值
print(books)
#如果想要计算某一段的值&#x