#Series与DataFrame
#导入pandas模块
import pandas as pd
import numpy as np
#创建一个Series类型数据
data = pd.Series([1,3,5,7])
print(data)
#获取Series数据的值
print(data.values)
#获取Series数据的索引
print(data.index)
#创建特殊的索引值
data = pd.Series([1,3,5,7],index=['a','b','c','d'])
print(data)
#修改索引值名称
data.index = ['我','喜','欢','你']
print(data)
#获取Series数据的长度
print(len(data))
#获取数组中某个数据
print(data['我'])
#获取数组中多个数据
print(data[['我','你']])
print(data[0:2])#切片
#计算重复元素出现的次数
list_data = [1,2,3,6,5,3,6,8,9,10,11,12,66,95,3,8,9,4,]
data = pd.Series(list_data)
print(data.value_counts())
#判断某个索引值是否存在
list_data = [1,2,3,6,5]
data = pd.Series(list_data,index=['a','j','c','z','w'])
print('a' in data)
#从字典创建一个Series类型的数据
dict_data = {
'Beijing':10000,
'Shanghai':8000,
'Shenzhen':5000
}
data = pd.Series(dict_data)
print(data)
#给数据传入索引值
index_list =['Guangzhou','Beijing','Shanghai','Shenzhen']
data = pd.Series(dict_data,index=index_list)
print(data)
#检测哪些数据是缺失的(空的)
print(data.isnull())
print(data.notnull())#检测非空
#数组运算
print(data*2)
#数组运算支持numpy数组运算
print(np.square(data))
#设定Series对象的name和索引名称
data.name = 'CityData'
data.index.name = 'City'
print(data)
############################################################################################
############################################################################################
#创建一个DataFrame类型的数据
dict_data = {
'student':['lilei','hanmeimei','madongmei'],
'score':[98,99,100],
'gender':['M','F','F']
}
data = pd.DataFrame(dict_data)
print(data)
#指定DataFrame数据的列顺序
data = pd.DataFrame(dict_data,columns=['score','gender','student'])
print(data)
#获取DataFrame数据的列名称
print(data.columns)
#指定DataFrame数据的索引值
data = pd.DataFrame(dict_data,
columns=['score','gender','student'],
index=['a','b','c'])
print(data)
#获取DataFrame数据中的某一列数据
print(data['student'])
#获取DataFrame数据中的某一行数据
##1.根据行编号
print(data.iloc[0])
##2.根据行索引
print(data.loc['a'])
#注意!切片得到的数据对应的还是原始数据任何修改都会反映到原始数据上
slice_data = data['score']
slice_data[0] = 70
print(data)
#想要一份副本不影响原始数据?
## data['score'].copy()
#修改DataFrame数据中的某一列数据
data['score'] = 95
print(data)
data['score'] = range(95,98)
print(data)
#传入Series类型修改DataFrame数据中的某一列数据
score = pd.Series([100,90,80],
index = ['c','b','a'])
data['score'] = score
print(data)
#删除DataFrame数据中的某一列数据
del data['score']
print(data)
#根据新的索引重新排列数据
data = data.reindex(['s','a','c','d'])
print(data)
#根据新的索引重新排列数据将缺失位置填0
data = data.reindex(['k','a','c','d'],fill_value=0)
print(data)
#根据新的索引重新排列数据
#将缺失位置通过插值法计算并补上内容
#bfill: 从后面数据计算插值
#ffill:从前面数据计算插值
data = data.reindex(['k','a','c','d'],method='ffill')
print(data)
#扔掉包含缺失的数据(NaN)的行
print(data.dropna())
#扔掉全部都是缺失的数据(NaN)的行
print(data.dropna(how='all'))
#填充所有缺失数据为一个值
print(data.fillna(0))
#删除某一行数据
dict_data = {
'student':['lilei','hanmeimei','madongmei'],
'score':[63,99,100],
'gender':['M','F','F']
}
data = pd.DataFrame(dict_data)
data = data.drop(0)
print(data)
#筛选数据
dict_data = {
'student':['lilei','hanmeimei','madongmei'],
'score':[63,99,100],
'gender':['M','F','F']
}
data = pd.DataFrame(dict_data)
print(data[data[ 'score' ]>=90])
#从列表中筛选数据
select_list = [63,99]
print(data[data['score'].isin(select_list)])
#利用groupby对数据进行分组并计算sum, mean等
data = pd.DataFrame({
'tag_id':['a','b','c','b','c','d'],
'count':[1,4,3,5,6,9]
})
grouped_data =data.groupby('tag_id')
print(grouped_data.sum())
#数据排序——按索引名称升序排列
print (data.sort_index())
#数据排序——按索引名称降序排列
print (data.sort_index(ascending=False))
#数据排序-按某一列的数据进行排序
dict_data = {
'student':['lilei','hanmeimei','madongmei'],
'score':[98,97,100],
'gender':['M','F','F']
}
data = pd.DataFrame(dict_data)
print(data.sort_values(by='score'))
#数据汇总
print(data.sum())
#同一个轴可以用多种方式来索引
book_rarings = pd.Series(
np.random.randint(1,6,size=7),
index=[
['b1','b1','b2','b2','b3','b4','b4'],
[1,2,1,2,1,2,3]
]
)
print(book_rarings)
#两个DataFrame进行合并
book_name = pd.DataFrame({
'book_name':['a','b','c','d','e','f'],
'book_id':[11,22,33,44,55,66]
})
id_rating = pd.DataFrame({
'book_id':[11,22,22,44,55,66,33,11,55],
'rating':[1,3,5,2,4,3,2,4,5]
})
print(pd.merge(book_name,id_rating))
#两个DataFrame进行合并,不指定连接方式
data1 = pd.DataFrame({
'key':['a','b','a','c','b','d'],
'data1':[1,2,3,4,5,6]
})
data2 = pd.DataFrame({
'key':['a','b','c'],
'data2':[8,9,7]
})
print(pd.merge(data1,data2))
#两个DataFrame进行合并,指定连接方式
##还可以使用left、right
data1 = pd.DataFrame({
'key':['a','b','a','c','b','d'],
'data1':[1,2,3,4,5,6]
})
data2 = pd.DataFrame({
'key':['a','b','c'],
'data2':[8,9,7]
})
print(pd.merge(data1,data2,how='outer'))
#两个DataFrame进行合并,指定连接的列名称
data1 = pd.DataFrame({
'key':['a','b','a','c','b','d'],
'data1':[1,2,3,4,5,6]
})
data2 = pd.DataFrame({
'key':['a','b','c'],
'data2':[8,9,7]
})
print(pd.merge(data1,data2,on='key'))
#两个DataFrame进行合并,分别指定连接的列名称
data1 = pd.DataFrame({
'lkey':['a','b','a','c','b','d'],
'data1':[1,2,3,4,5,6]
})
data2 = pd.DataFrame({
'rkey':['a','b','c'],
'data2':[8,9,7]
})
print(pd.merge(data1,data2,left_on='lkey',right_on='rkey'))
########################################################################
########################################################################
#Pandas文件存取
#读取CSV文件
data = pd.read_csv('rating.csv')
print(data)
#读取CSV文件,不要标题行
data = pd.read_csv('rating.csv',header=None)
print(data)
#读取CSV文件,指定索引列
data = pd.read_csv('rating.csv',
names=['user_id','book_id','rating'],
index_col='user_id')
print(data)
#读取CSV文件,自动处理缺失的数据
data = pd.read_csv('rating.csv',header=None)
print(data)
#储存数据为CSV文件
dict_data = {
'student':['lilei','hanmeimei','madongmei'],
'score':[63,99,100],
'gender':['M','F','F']
}
data = pd.DataFrame(dict_data)
data.to_csv('student.csv')
#读取Excel文件
file = pd.ExcelFile('student.xlsx')
data =file.parse('student')
print(data)
#pandas比numpy的读取速度快
#numpy比pandas的处理速度快
pandas基础
最新推荐文章于 2023-04-18 17:06:05 发布