pandas的两种基本数据结构series和datarframe

python的重要工具pandas

博客中代码在jupyter notebook中实现

pandas是基于numpy构建的含有更高级数据结构和数据分析能力的工具包。numpy中数据结构是围绕ndarray展开的,pandas中数据结构是围绕Series和dataframe展开的。

1、Series结构

Series是定长的有序字典,它有两个基本属性:index&values

2、Series基本操作
2.1 创建一个Series
import pandas as pd
import numpy as np
s1=pd.Series([1,3,-7,5])   # 创建一个series,索引值默认为0,1,2,3......
print(s1)

结果:

0    1
1    3
2   -7
3    5
dtype: int64

2.2 查看Series的值
s1.values

结果:

array([ 1,  3, -7,  5], dtype=int64)
2.3 查看Series的索引
s1.index

结果:

RangeIndex(start=0, stop=4, step=1)
2.4 自定义索引创建Series
s2=pd.Series([0.2,1,3,5],index=['a','b','c','d'])  # 自定义索引
print(s2)

结果:

a    0.2
b    1.0
c    3.0
d    5.0
dtype: float64
2.5 根据索引值进行值的查询
s2['a'] 

结果:

0.2
2.6 查看值是否在Series中
'b' in s2

结果:

True
2.7 将字典传入Series,实现字典的有序化
dic1={'apple':5,'banana':2}  #创建一个字典
dic1

结果:

{'apple': 5, 'banana': 2}
s3=pd.Series(dic1)    # 将字典传入series,将字典序列化
print(s3)

结果:

apple     5
banana    2
dtype: int64
3、dataframe结构
3.1 创建一个dataframe
data={'year':[2015,2016,2017,2018],
      'income':[10000,20000,50000,30000],
      'enpense':[5000,10000,60000,2000]}
df1=pd.DataFrame(data)
df1

结果:
在这里插入图片描述

3.2 创建一个dataframe,包含的数字范围和形状是给定的
df2=pd.DataFrame(np.arange(12).reshape((3,4)))
df2

结果:
在这里插入图片描述

3.3 创建一个dataframe,可以指定行列属性
df3 = pd.DataFrame(np.arange(12).reshape((3,4)),index=['a','c','b'],columns=['A','D','C','B'])   # 指定行列属性
df3

结果:
在这里插入图片描述

3.4 获取行和列的属性
df1.columns    #获取列的属性

结果:

Index(['year', 'income', 'enpense'], dtype='object')
df1.index     #获取行的属性

结果:

RangeIndex(start=0, stop=4, step=1)
3.5 获取值的array格式
df1.values

结果:

array([[ 2015, 10000,  5000],
       [ 2016, 20000, 10000],
       [ 2017, 50000, 60000],
       [ 2018, 30000,  2000]], dtype=int64)
3.6 获取dataframe的一些描述性属性
df1.describe()

结果:
在这里插入图片描述

3.7 dataframe的转置
df1.T

结果:
在这里插入图片描述

3.8 不同形式的排序
df3.sort_index(axis=1)       #按照列的属性值排序

在这里插入图片描述


df3.sort_index(axis=0)     # 按照行的索引值排序

在这里插入图片描述

3.9 删除某一列或者某一行
df3.drop(columns=['A'])

在这里插入图片描述

df3.drop(index=['a'])

在这里插入图片描述

3.10 替换行列名称
df3.rename(columns={'A': 'first', 'B': 'second'}, inplace = True)    #替换列名
df3

在这里插入图片描述

4、dataframe的实际操作小例子
data = {'Chinese': [80,78,95,68,80,80],'English': [65, 85, 92, 88, 90,90],'Math': [30, 98, 96, 77, 90,90]}
df2 = pd.DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei','DianWei'], columns=['English', 'Math', 'Chinese'])
df2)

在这里插入图片描述


df2.drop_duplicates() # 去除重复行

在这里插入图片描述


首先创建一个数据表

df1 = pd.DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})     
df2 = pd.DataFrame({'name':['ZhangFei', 'GuanYu', 'A', 'B', 'C'], 'data2':range(5)})
df1

在这里插入图片描述

df2

在这里插入图片描述


df3 = pd.merge(df1, df2, on='name')    #按name属性将两个dataframe进行连接
df3

在这里插入图片描述


df4 = pd.merge(df1, df2, how='inner')    #inner内连接是基于键的交集进行连接
df4

在这里插入图片描述


df5 = pd.merge(df1, df2, how='left')     #lift左连接,以第一个dataframe为主,第二个dataframe作为辅助
df5

在这里插入图片描述


df6 = pd.merge(df1, df2, how='right')     #right右连接,以第二个dataframe为主,第一个dataframe作为辅助
df6

在这里插入图片描述


df7 = pd.merge(df1, df2, how='outer')      #外连接是求两个dataframe的并集
df7

在这里插入图片描述

练习题之二:
在这里插入图片描述
首先创建一个dataframe,

import pandas as pd
data={'语文':[66,95,95,90,80,80],
      '英语':[65,85,92,88,90,90],
      '数学':[None,98,96,77,90,90]
}
df1=pd.DataFrame(data,index=['张飞','关羽','赵云','黄忠','典韦','典韦'])
df1

在这里插入图片描述

df1 = df1.drop_duplicates()      #去除重复项
df1

在这里插入图片描述

def total_score(df):       #定义一个计算总分的函数
    df['总分'] = df['语文'] + df['英语'] + df['数学']
    return df
df1['数学'].fillna(df1['数学'].mean(), inplace=True)      #空值的填充方式,这里将空值用平均值代替
df = df1.apply(total_score, axis=1)     #将函数应用到该数据表上
df

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值