pandas基础

1001-高同学

发表文章数:265

热门标签

首页 » 数据科学库 » 正文

pandas是由series(数据列)和dataframe(由多个数据列组成的数据框)

安装pandas

windows:pip install pandas
mac:pip3 install pandas

导入pandas模块import pandas as pd

pandas使用

创建一个series类型数据(Series()里直接填一个由数字组成的列表

#list_data=[1,2,4,7]
#data=pd.Series(list_data)
data=pd.Series([1,2,4,7]) #输出格式为两列,左边为索引编号,右边为数据

获取Series数据的值data.values
获取Seires数据的索引
data.index #输出格式为RangeIndex(start=0,stop=4,step=1)
创建特殊的索引值
data=pd.Series(lsit_data,index=[‘A’,‘G’,‘C’,‘F’])
修改索引值名称
data.index=[‘E’,‘R’,‘F’,‘H’]
获取Series数据的长度
len(data)
获取数组中某个数据
data[‘E’]
获取数组中多个数据
data[[‘A’,‘G’,‘C’]]
切片获取
data[0:3]

计算重复元素出现的次数
data.value_counts() #输出两列,左边为元素,右边为重复次数
判断某个索引值是否存在
‘E’ in data #存在返回True,否则返回False

从字典创建一个Series类型的数据

dict_data={‘ok’:123,‘no’:586}
data=pd.Series(dict_data)

给数据传入索引值

index_list=[‘wa’,‘ok’,‘no’]
data=pd.Series(dict_data,index=index_list) #原本不存在的键的值为Nan(不存在)

检测哪些数据是缺失的(空的)
data.isnull()如果为空,输出的索引对于True,否则返回False,检测非空用notnull()

数组运算data*2
数组运算支持numpy数组运算
np.square(data)
数组元素相加会根据索引自动对齐(两个数组索引相同,但排序不同)

设定Series对象的name和索引名称

data.name=‘City Data’
data.index.name=‘City’

创建一个DataFrame类型的数据

dict_data={
‘student’:[‘lilei’,‘hanmeimei’]
‘score’:[98,99]
‘gender’:[‘M’,‘F’]
} #字典的键对应的是列的名称,输出的列顺序是逆序

data=pd.DataFrame(dict_data)
指定DataFrame数据的列顺序
data=pd.DataFrame(dict_data,columns=[‘student’,‘gender’,‘score’])
获取DataFrame数据的列名称
data.columns
指定DataFrame数据的索引值
data=pd.DataFrame(dict_data,columns=[‘student’,‘gender’,‘score’],index=[‘W’,‘S’])

获取DataFrame数据中的某一列数据
data[‘student’]/data.student
获取DataFrame数据中的某一行数据
#根据行编号
data.iloc[0]
#根据行索引
data.loc[‘W’]切片得到的是原始数据,任何修改都会反映到原始数据上,不想影响原始数据 .copy()

修改DataFrame数据中的某一列数据

data[‘gender’]=‘F’ #该列中所有元素都被修改为F
#赋值一组数据
data[‘score’]=range(95,97)
传入Series类型修改DataFrame数据中的某一列数据
score=pd.Series([88,44],index=[‘S’,‘W’])
data[‘score’]=score

删除DataFrame数据中的某一列

del data[‘score’]
根据新的索引重新排列数据
data=data.reindex([‘S’,‘W’,‘R’])
#索引值R对应元素为NaN

将缺失位置填0
data=data.reindex([‘S’,‘W’,‘R’],fill_value=0)
将缺失位置通过插值法计算并补上内容
data=data.reindex([‘S’,‘W’,‘R’],method=‘ffill’)
#ffill:从前面的数据计算插值 bfill:从后面数据计算插值
扔掉包含缺失的数据(NaN)的行
data.dropna()
扔掉全部都是缺失的数据(NaN)的行
data.dropna(how=‘all’)
填充所有缺失数据为一个值
data.fillna(0)
按列填充缺失数据为不同值
data.fliina({‘gender’:‘M’,‘student’:‘xialuo’,‘score’:70})
根据索引值删除某一行数据
data=data.drop(‘W’)

筛选数据

data[data[‘score’]>=80]
#data[‘score’]>=80 根据索引值返回True或False
从列表中筛选数据
select_list=[99,70,100]
data[data[‘score’].isin(select_list)]

利用groupby对数据进行分组并计算sunm、mean等

data=pd.DataFrame{
‘tag_id’:[‘A’,‘B’,‘B’,‘V’,‘A’]
‘count’:[1,3,5,7,6]
}
group_data=data.groupby(‘tag_id’)
he=group_data.sum() #根据tag_id的值对应count的值,根据标签求和

数据排序——按索引名称升序排序
data.sort_index()
数据排序——按索引名称降序排序
data.sort_index(ascending=False)
数据排序——按某一列数据进行排序
data=data.sort_values(by=‘score’)

数据汇总

data.sum() #按列相加,字符串相加,数字求和
count 计算非NaN数据的数量
maxmin 计算最大或最小值
argmax、argmin 计算最大值和最小值所在位置
sum 计算数值的和
mean 计算平均数
median 计算中位数
var 计算方差
std 计算标准差

同一数据可以用多种方式索引

book_rating=pd.Series(
np.random.randint(1,6,size=7)
index=[
[‘B1’,‘B2’,‘B2’,‘B3’,‘B3’,‘B4’]
[1,3,4,2,3,2]
]
)

两个DataFrame进行合并

book_name=pd.DataFrame{}
id_rating=pd.DataFrame{}
pd.merge(book_name,id_rating) #按照相同元素对应jinxinghebing
两个DataFrame进行合并,不指定连接方式
data1=DataFrame{}
data2=DataFrame{} #两个长度不一样
pd.merge(data1,data2) #默认连接两个数据都有的,没有的去掉
两个DataFrame进行合并,指定连接方式
pd.merge(data1,data2,how=‘outer’) #没有的填上NaN
#how='left’连接方式以左边为准,how='right’连接方式以右边为准
两个DataFrame进行合并,指定连接的列名称(两者之间有相同的列名称)
data1=DataFrame{‘key’:[ ]
‘sl’:[ ]}
data2=DataFrame{‘s2’:[ ]
‘key’:[ ]}
pd.merge(data1,data2,on=‘key’)
两个DataFrame进行合并,指定连接的列名称(两者之间没有相同的列名称)
data1=DataFrame{‘lk’:[ ]
‘el’:[ ]}
data2=DataFrame{‘rk’:[ ]
‘tg’:[ ]}
pd.merge(data1,data2,left_on=‘lk’,right_on=‘rk’)

Pandas文件存取
读取CSV文件
data=pd.read_csv(‘XXX.csv’)
读取CSV文件,不要标题行
data=pd.read_csv(‘XXX.csv’,header=None)
读取CSV文件,自定义标题行
data=pd.read_csv(‘XXX.csv’,names=[‘user_id’,‘book_id’])
读取CSV文件,指定索引列
data=pd.read_csv(‘XXX.csv’,names=[‘user_id’,‘book_id’],index_col=‘user_id’)
读取CSV文件,指定分隔符
data=pd.read_csv(‘XXX.csv’,names=[‘user_id’,‘book_id’],seq=’,’)
#读取CSV文件,会自动处理缺失的数据

储存为CSV文件
data.to_csv(‘XXX.csv’)

读取excel文件

windows:pip install xlrd
mac:pip3 install xlrd

读取excel文件

file=pd.ExcelFile(‘XXX.xlsx’)
data=file.parse(‘XXX’)

Pandas读取文件比Numpy快

t_list=glob.glob(*.txt’)
for title in t_list:
title=title.split(.)[0]
print(title)
标签:

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《pandas基础》 发布于2020-05-17

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录