Pandas学习1
一、pandas使用准备
1.安装Pandas:
pip install pandas
2.导包:
import pandas as pd
二、 Pandas-Series
1.Series说明
是一个一维数据结构,它由index和value组成,Series是一种类似于一维数组的对象,它由一组数据和一组与之相关的索引组成。
2.Series创建
(1)列表创建法:
a = pd.Series([1,2,3],index=[‘a’,‘b’,‘c’])
(2)标量值创建法:
a = pd.Series(25,index=[‘a’,‘b’,‘c’])
(3)python字典法:
a={‘o’:3500,‘t’:7100,‘u’:5000} b = pd.Series(a)
(4)ndarray法:
ojb = pd.Series(np.arange(5),index=np.arange(9,4,-1))
3.Series操作
(1)index和values操作:
a.index # 获取索引值
a.values # 获取值
(2)索引和切片操作
a.index[x:y]
a.values[x:y]
二、Pandas-DataFrame
1.DataFrame说明
DataFrame是一个二维表格型数据结构。DataFrame对象既有行索引,又有列索引。其中,行索引表明不同行,横向索引。列索引表名不同列,纵向索引。
2.DataFrame创建
(1)二维数组创建
df=df([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],#设置值
index=list([‘第一行’,‘第二行’,‘第三行’,‘第四行’]), #设置行索引
columns=list([‘第一列’,‘第二列’,‘第三列’,‘第四列’])) #设置列索引
(2)字典创建
student={‘name’:[‘小王’,‘晓东’,‘小敏’],
‘sage’:[22,21,20],
‘ssex’:[‘man’,‘man’,‘woman’]}
student = df(student)
3.DataFrame属性和操作
(1)基础属性操作(index,Value等值)
(1)df.shape #行数和列数 (2)df.dtypes #列数据类型
(3)df.ndim #数据维度 (4)df.index #行索引
(5)df.columns #列索引 (6)df.values #对象值
(2)显示信息操作
(1)df.head(3) #显示前3行 (2)df.tail(3) #显示末尾3行
(3)df.info() #显示信息概述,行数,列数,索引,列非空值个数,列类型等。
(4)df.describe() # 统计信息,均值,最大值,最小值,标准差等。
3.索引操作(获取标签所指定列的数据)
(1)标签索引loc
Dataframe可以通过标签索引loc获取标签所指定列的数据。
student.loc[[0, 1] , [‘name’, ‘sage’]]
student.loc[0 : 3 , [‘name’, ‘ssex’]]
(2)位置索引loc
Dataframe可以通过位置索引iloc获取位置所指定列的数据
student.iloc[[0, 1] , [0, 1]]
student.iloc[0 : 3, [0,2]]
(3)布尔索引
student[‘sage’]<=21 student[student[‘sage’]<=21]
输出结果为: name sage ssex
0 False 1 晓东 21 man
1 True 2 小敏 20 woman
2 True
(4)改变值
student.loc[1,‘sage’] = 23 或者 student.iloc[1,1] = 23
(5)删除指定索引对象
3.5删除指定索引对象
drop()能够删除DataFrame指定行或列索引。
student=student.drop([0]) #将0号同学的信息删除
student=student.drop([‘sage’],axis=1) #将同学的年龄信息删除
5.合并操作
(1)concat操作
concat把两个表拼在一起或堆叠。这个函数的关键参数应该是 axis,用于指定连接的轴向。axis=0垂直堆叠,axis=1 水平堆叠,默认是axis=0。
s = pd.concat([a1, a2], axis=1)
(2)merage操作
merge表示按照指定的列把数据按照一定的方式合并到一起,有四种方式
(1)默认的为交集inner
a1.merge(a2,left_on=“第二列”,right_on=‘第三列’,how= ‘inner’)
输出结果
0 1 2 2 5
(2)并集outer,NaN补全
a1.merge(a2,left_on=“第二列”,right_on=‘第三列’,how= ‘outer’)
输出:
第一列 第二列 第三列 第四列
0 1.0 2.0 2.0 5.0
1 5.0 6.0 NaN NaN
2 NaN NaN 3.0 8.0
(3)以左边为准left,NaN补全
a1.merge(a2,left_on=“第二列”,right_on=‘第三列’,how= ‘left’)
输出结果
第一列 第二列 第三列 第四列
0 1 2 2.0 5.0
1 5 6 NaN NaN
5.统计操作
(1)统计函数
方法 说明
.sum() : 计算数据的总和,按0轴计算,下同
.count() : 非NaN(缺失值)的数量
.mean() .median(): 计算数据的算术平均值、算术中位数
.var() .std() : 计算数据的方差、标准差
.min() .max() :计算数据的最小值、最大值
.describe() :输出所有列的统计信息。
info() :检查缺失值情况
(2)相关性统计分析
协方差
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
• 协方差>0,X和Y正相关
• 协方差<0,X和Y负相关
• 协方差=0,X和Y独立无关
相关分析函数包括cov():计算协方差矩阵
(3)分组统计GroupBy
(1)拆分(Spliting):将数据进行分组
(2)应用(Applying):对每组应用函数进行计算
(3)合并(Combining):将计算结果进行数据聚合
使用GroupBy()可以沿着任意轴进行分组,并且将分组依据的键作为每组的组名,有一下3种用法:
(1)df.groupby(key)
(2)df.groupby(key,axis=1)
(3)df.groupby([key1,key2])
同时也可以用来计算 例如:
(1)统计每个班分数的总和:student.groupby(‘班级’).sum()。
(2)将每个班按照性别统计均值:student.groupby([‘班级’,‘性别’]).mean()
6.数据排列
(1)sort_values
该方法根据数据进行排序,可以分为sort column和sort by column,注意加以区分。
sort column
从DataFrame中挑取出来具体的列,然后对该行进行排序
dataframe.colname.sort_values()
dataframe.colname.sort_values(ascending = False)
dataframe[“colname”].sort_values()
dataframe[“colname”].sort_values(ascending = False)
sort by column
这种方法是按照给定的列的值对DataFrame数据进行排序
单列排序
dataframe.sort_values(by=“colname”)
多列排序
dataframe.sort_values( [“col1”, “col2”,…“coln”])
(2)sort_index
该方法可以根据行名排序,也可以根据列名排序,区别在于axis,axis = 0 给列名排序,ascending指定排序方法
7.字符串操作
(1)选择字符串内数据
str=[‘东’,‘南’]
room1=room[room[‘房屋朝向’].isin(str)] #选择出房屋朝东和南的
(2)字符串映射数字map方法
label_mapping = {“东”: 1,“南”: 2, “西”: 3, “北”: 4}
room[‘房屋朝向’] = room.房屋朝向.map(label_mapping)
(3)时间字符串转时间格式
(1)to_datetime将字符串格式转换为日期格式
room[‘时间’] =pd.to_datetime(room[‘时间’],format=’%H:%M’)
(2) strptime将字符串格式转换为日期格式
room[‘时间’]= room[‘时间’].apply(lambda x:datetime.datetime.strptime(x,’%H:%M’))
(3)strftime将日期格式转换为字符串格式
room[‘时间’]= room[‘时间’].apply(lambda x:datetime.datetime.strftime(x,’%H-%M’))
文件读写操作
(1)读入文件
pd.read_csv(filepath, sep=’,’, delimiter=None, header=‘infer’, names=None, index_col=None, prefix=None, nrows=None, encoding=None, skiprows=0)
常见参数如下:
(1)filepath:文件所在处的路径
(2)sep:指定分隔符,默认为逗号’,’
(2)delimiter : str, default None定界符,备选分隔符(如果指定该参数,则sep参数失效)
(3)header:指定哪一行作为表头。默认设置为0(即第一行作为表头),如果没有表头的话,要修改参数,设置header=None
(4)names:指定列的名称,用列表表示。一般我们没有表头,即header=None时,这个用来添加列名就很有用啦。
(5)index_col:指定哪一列数据作为行索引,可以是一列,也可以多列。多列的话,会看到一个分层索引
(6)prefix:给列名添加前缀。如prefix=“x”,会出来"x1"、“x2”、“x3”
(7)nrows : 需要读取的行数(从文件头开始算起)
(8)encoding:乱码的时候用这个就是了
(9)skiprows :忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。
(2)保存文件
pd.to_csv(path,sep,na_rep,columns,header,index)
参数解析:
(1)path:字符串,放文件名、相对路径、文件流等。
(2)sep:字符串,分隔符,跟read_csv()的一个意思。
(3)na_rep:字符串,将NaN转换为特定值。
(4)columns:列表,指定哪些列写进去。
(5)header:默认header=0,表示有表头;header= None,表示没有表头。
(6)index:默认True,设置表格有索引;False,设置表格没有索引。
(3)按格式输出
DataFrame.to_html(“test.html”)