欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Task1-pandas基础学习笔记

程序员文章站 2022-05-26 21:41:32
...

pandas简易入门

pandas应用的主要方向在于对数据的整理,pandas基于numpy,具有十分强大的数据整合功能,在生成Series及DataFrame时,都以二维列表的形式展现,下面主要介绍各种基本函数

文件读取与写入

为了方便,使用head()函数,使用该函数提取前5个数据,比较具有代表性
1.csv文件

df = pd.read_csv('data/table.csv').head()	#读取
df.to_csv('data/table.csv', index=False)	#写入,并去掉行索引

2.txt文件

df_txt = pd.read_table('data/table.txt', sep='_') 
#sep为分隔符参数

3.xls或xlsx格式

df_excel = pd.read_excel('data/table.xlsx').head()	#读取
df.to_excel('data/new_table2.xlsx', sheet_name='Sheet1')	#写入

基本结构

Series

Series基本的结构由索引值(index)及值(values)构成,一般为n*2列的列表,其他属性还包括名字(name),类型(dtype)
1.创建一个Series列表:

#	第一种方法(一般)
list_1 = np.random.randn(5)		#可以随机生成
list_2 = [1,2,3,4,5]			#也可以自己写
data = pd.Series(list_1,index=['a','b','c','d','e'],name='这是一个Series',dtype='float64')
#	第二种方法(根据字典创建)
dict_data = {'a':1,'b':2,'c':3,'d':4,'e':5}
data = pd.Series(dict_data)

data.index = ['d','e','b','c','a']		#更换索引值

2.Series列表基本的属性:

data.values
data.name
data.index
data.dtype
len(data)		#返回data的长度

3.Series中的具体值:

data['a']		#根据索引值定位值
data[['a','b']]	#多个值
data[0:2]		#对data进行切片
data.value_counts()	#计算重复元素出现的次数
#	判断某个索引值是否存在
print('a' in data) #返回一个bool值
#	检测缺失数据
print(data.isnull())

4.Series可以调用很多的函数,这些函数支持Numpy运算

DataFrame

DataFrame是Series的升级版,Series中一个索引值对应一个值,而在DataFrame中,一个索引值对应很多种类的值,因此信息量更加庞大
1.创建DataFrame

df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]},index=list('一二三四五'))
#	也可根据字典创建
dict_df = {'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]}
df = pd.DataFrame(dict_df)

2.具体的操作

#	可以指定排练顺序
df = pd.DataFrame(dict_df, columns=['col2','col1','col3'])
print(data.columns)		#可查看列名称
#	修改行或列名
df.rename(index={'一':'one'},columns={'col1':'new_col1'})
#	索引对齐特性(会根据索引值进行计算)
df1 = pd.DataFrame({'A':[1,2,3]},index=[1,2,3])
df2 = pd.DataFrame({'A':[1,2,3]},index=[3,1,2])
df1-df2 
#	列的删除
df.drop(index='五',columns='col1', inplace=True) #设置inplace=True后会直接在原DataFrame中改动
del df['col1']	#删掉col1这一列
df.pop('col1')	#与python中pop相似,会返回删除的列,并同时在原DataFrame上进行修改
#	列的添加
df1.assign(C=pd.Series(list('def')))	#不会对原DataFrame做修改,相当于生成一个新的DataFrame
#	根据类型选择列
df.select_dtypes(include=['number']).head()		#把值是数字的选择出来
df.select_dtypes(include=['float']).head()		#把值是浮点数的选择出来

print(pd.merge(data1,data2,left_on='lkey',right_on='rkey'))

两个DataFrame合并

#	两个DataFrame进行合并,不指定连接方式,则取交集
data1 = pd.DataFrame({
	'key':['a','b','c','s','r','p'],
	'data1':[1,2,3,4,5,6]
	})
data2 = pd.DataFrame({
	'key':['a','b','c'],
	'data1':[4,5,6]
	})
print(pd.merge(data1,data2))
#	添加参数
print(pd.merge(data1,data2,how='outer'))
#	以谁为准
how='left'
how='right'

#两个DataFrame进行合并,指定连接的列名称
data1 = pd.DataFrame({
	'key':['a','b','c','s','r','p'],
	'data1':[1,2,3,4,5,6]
	})
data2 = pd.DataFrame({
	'key':['a','b','c'],
	'data1':[4,5,6]
	})
print(pd.merge(data1,data2,on='key'))

#分别指定
data1 = pd.DataFrame({
	'lkey':['a','b','c','s','r','p'],
	'data1':[1,2,3,4,5,6]
	})
data2 = pd.DataFrame({
	'rkey':['a','b','c'],
	'data1':[4,5,6]
	})
print(pd.merge(data1,data2,left_on='lkey',right_on='rkey'))

3.DataFrame与Series
将Series转换为DataFrame

s = df.mean()
s.to_frame()