前言
pandas是基于numpy的一个工具,创建的目的是为了解决数据分析。它纳入大量的库和一些标准的数据模型,提供了大量使我们快速处理数据的函数和方法。
pandas的基本结构
1.Series
Series是一维数组,与Numpy中的array相似,可以保存不同种数据类型,如字符串、数字等。
Series初始化:
import numpy as np
import pandas as pd
s = pd.Series([1,2,3,np.nan,12],index=['a','b','c','d','e']) #index是定义下标,默认情况下是数字,也可以s.index = list('abcde')
s.idnex #索引——数据的行标签
s.values #查看数据
s.index.name = '索引'
2.DataFrame
DataFrame是一个二维的表格型数据结构。
(1)构建一个DataFrame
构建一个DataFrame:
data = pd.date_range('20200101',periods=10)#构建一个起始为2020年1月1日,10个日期的时间序列作为第一维下标
w = pd.DataFrame(np.random.randn(10,4),index=data)#如果不指定index和columns,默认情况下是从0开始的数字
##查看数据
w.head() #查看前几行,默认是5
w.tail(3) #查看后3行
除了向DataFrame中传入二维数组,也可以用字典传入数据:
w1 = pd.DataFrame({'A':1.,'B':pd.Timestamp('20200101'),'C':pd.Series(1,index=list(range(4)),dtype=float),'D':np.array([3]*4,dtype=int),'E':pd.Categorical(['test','train','test','train'])})
#字典的每一个key代表一列,其value可以是各种能够转化成Series的对象,DataFrame只要求每一列数据的格式相同。
(2)基本操作
读取数据:
w = pd.read_excel(r'D:\python学习\豆瓣电影数据.xlsx')#路径+文件名,r是表示告诉系统不需要转义
行操作:iloc是左闭右开,loc是闭区间
w.iloc[0]#出了的结果就是第一行的所有内容
#w.iloc[0:5] 与w.head()结果一样
#添加一行
dit = {'名字':'复仇者联盟3','投票人数':2370936,'类型':'剧情/科幻','产地':'美国','上映时间':'2018-05-04 00:00:00','时长':150,'年代':2018,'评分':8.7,'首映地点':'美国'}
s = pd.Series(dit)
s.name = 38738
w = w.append(s) #把s加到w的最后一行
#删除一行
w = w.drop(38738)
列操作:
w.columns #可以看见所有列的名称
w['名字'][:5] #看前5行名字这列的内容,取多列: w[['名字','评分']]
#增加列
w['序号'] = range(1,len(w)+1)#range是一个左闭右开的区间,是取的整数
#删除一列
w = w.drop('序号',axis=1)
#取多行多列:w.loc[[1,4,6],['名字','评分']]
条件选择:
w[w['产地']=='中国大陆'] #得到所有产地为中国大陆的数据
w[(w.产地=='中国大陆')&(w.评分>9)]#得到所有产地为中国大陆并且评分大于9的电影的数据
w[((w.产地=='中国大陆')|(w.产地=='美国'))&(w.评分>9)]
(3)缺失值及异常值处理
我们在做数据分析之前,就会对数据进行清洗,就包括缺失值和异常值的处理。
判断缺失值:
w.isnull() #对数据中所有的缺失值进行判断
w[w['名字'].isnull()] #查找某一列的缺失值
填充缺失值:
fillna(np.mean(w['评分']),inplace=True)#用均值和中位数的方法填充只是对数字型数据,inplace=True就是直接在原始数据填充。
##对文本数据填充
w.fillna('未知产地')
删除缺失值:
w.dropna():
how = 'all’表示删除全为空值的行和列
inplace=True表示覆盖之前的数据
axis=0表示选择行,1表示选择列
异常值处理:
对于数量少的,直接删掉
(4)数据保存
w.to_excel('路径+文件名')