python学习之pandas(2021-03-26)

Python中pandas库的学习

Pandas是什么?

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。

利器之一:DataFrame
DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

利器之二:Series
它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

介绍了简单的pandas的一些函数和使用方法,便于今后的回顾和学习

import  pandas as pd
import  numpy as np
import  matplotlib.pyplot as plt

##############  pandas(字典形式的numpy)   #########################
s = pd.Series([1,3,6,np.nan,44,1])
print(s)

data = pd.date_range('20160101',periods=6)
print(data)

df = pd.DataFrame(np.random.randn(6,4),index=data,columns=['a','b','c','d'])
print(df)
print(df.dtypes)
print(df.index)
print(df.columns)
print(df.values)
print(df.describe())                           #按列求出一些统计特征
print(df.T)
print(df.sort_index(axis=1,ascending=False))   #按列进行排序
print(df.sort_index(axis=0,ascending=False))   #按行进行排序
print(df.sort_values(by='d'))                  #按D列的值升序排列

##############  pandas选择数据   #########################
print(df)
print(df['a'],df.a)                                #选择第一列
print(df[0:3],df['2016-01-01':'2016-01-03'])       #选择切片
print(df.loc['2016-01-01'])                        #按行来选择数据
print(df.loc[:,['a','b']])                         #按列进行删选
print(df.loc['2016-01-03',['a','b']])              #按行列筛选数据
print(df.iloc[3:5,1:3])
print(df.iloc[[1,3,5],0:5])
print(df[df.c>0])                                   #选择c中大于0的数,并显示这些数所在的行

##############  pandas设置值   #########################
print(df)
df.iloc[2,2] = 333                                    #修改某个指定的值
df.loc['2016-01-04','b'] = 222
df[df.a>0] = 0.1                                      #a列中大于0的数,把该数所在的行全部设置为0.1
df.b[df.a>0] = 333                                    #a列中大于0的数,把b列对应的数设置为333
df['f'] = np.nan                                      #新增列
df.f[df.a>0] = 624                                    #修改新列中的值
df['e'] = pd.Series([1,2,3,4,5,6],index=pd.date_range('2016-01-01',periods=6))              #添加一列新的值
print(df)

##############  pandas处理丢失数据   #########################
df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan
print(df)
print(df.dropna(axis=1,how='any'))                      #每行扫描,若有nan值则丢掉该行(axis=1则丢掉该列)
print(df.fillna(value=0))                               #将无效值设置为0
print((df.isnull()))                                     #检查每个值是否为无效值
print(np.any(df.isnull()) == True)                       #是否有无效值

##############  pandas数据导入和导出   #########################
data =pd.read_csv('D:\桌面/pandas_data.csv')                #桌面创建pandas_data的csv文件,并导入
print(data)

data.to_excel('D:\桌面/new_data.xlsx')                      #保存为excel文件在桌面中

##############  pandas数据的合并   #########################

#concat函数
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
print(df1)
print(df2)
print(df3)                                                            #索引相同
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)               #0竖向划分操作行(上下合并),1横向划分操作列(左右合并)
print(res)

df3 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df4 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])
print(df3)
print(df4)                                                               #索引不同
res = pd.concat([df3,df4],join='inner',ignore_index = True)            #合并求交集
print(res)

res = df3.append(df4,ignore_index=True)
print(res)

s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])                       #添加单独行
res = df3.append(s1,ignore_index=True)
print(res)

#merge函数
left = pd.DataFrame({'key':['k0','k1','k2','k3'],
                    'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']
                     })
right = pd.DataFrame({'key':['k0','k1','k2','k3'],
                    'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']
                      })
print(left)
print(right)
res = pd.merge(left,right,on='key')            #按key列进行合并
print(res)

left = pd.DataFrame({'key1':['k0','k1','k2','k3'],
                     'key2':['k0','k1','k0','k0'],
                    'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']
                     })
right = pd.DataFrame({'key1':['k0','k1','k2','k3'],
                      'key2':['k0','k0','k0','k0'],
                    'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']
                      })
print(left)
print(right)
res = pd.merge(left,right,on=['key1','key2'],how='outer')    # how = [left,right,outer,inner]
print(res)

boys = pd.DataFrame({'k':['k1','k2','k3'],'age':[1,2,3]})
girls = pd.DataFrame({'k':['k0','k0','k3'],'age':[7,8,9]})
print(boys)
print(girls)
res = pd.merge(boys,girls,on='k',suffixes=['_boys','_girls'],how='outer')
print(res)

##############  pandas图表绘制   #########################

#Series
data = pd.Series(np.random.randn(1000),index=np.arange(1000))       #随机生成1000个数据
data = data.cumsum()                                                #累加
data.plot()                                                         #绘制
plt.plot()
plt.show()                                                          #显示

#DataFrame
data =pd.DataFrame(np.random.randn(1000,4),
                        index = np.arange(1000),                      #生成1000*4个随机数据,columns 为ABCD
                   columns= list("ABCD"))
data = data.cumsum()                                                  #依次累加
print(data.head())                                                    #显示前几个数据
#plot methods
#  bar, hist, box, kde, area, scatter, hexbin, pie
ax = data.plot.scatter(x='A',y='B',color = 'DarkBlue',label = 'Class 1')        #绘制散点图
data.plot.scatter(x='A',y='C',color = 'DarkGreen',label = 'Class 2',ax = ax)    #绘制第二组数据
plt.show()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值