【博学谷学习记录】超强总结,用心分享 | 狂野大数据-pandas学习分享

完文章后,目录可以自动生成,如何生成可参考右边的帮助文档`


一、pandas的数据结构

  • DataFrame
    • Series
      • 索引列
        • 索引名、索引值
        • 索引下标、行号
      • 数据列
        • 列名
        • 列值,具体的数据

其中最核心的就是Pandas中的两个数据结构:DataFrame和Series

二、series对象

Series也是Pandas中的最基本的数据结构对象,下文中简称s对象;是DataFrame的列对象,series本身也具有索引。

Series是一种类似于一维数组的对象,由下面两个部分组成:

  • values:一组数据(numpy.ndarray类型)
  • index:相关的数据索引标签;如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

2.1.创建Series对象

代码如下(示例):
通过列表创建:

import pandas as pd
# 使用默认自增索引
s2 = pd.Series([1,2,3])
s2
s3 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s3

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

代码如下(示例):
通过字典或元组创建:

test = (1,2,3,4,5,6)
s4 = pd.Series(test)

在这里插入图片描述

dist = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6}
s5 = pd.Series(dist )
s5

在这里插入图片描述

2.2.Series对象常用API

s6 = pd.Series([i for i in range(6)], index=[i for i in 'ABCDEF'])
# s对象有多少个值,int
len(s6) 
s6.size

# s对象有多少个值,单一元素构成的元组 (6,)
s6.shape 

# 查看s对象中数据的类型
s6.dtypes

# s对象转换为list列表
s6.to_list()

# s对象的值 array([0, 1, 2, 3, 4, 5], dtype=int64)
s6.values 

# s对象的值转换为列表
s6.values.tolist() 

# s对象可以遍历,返回每一个值
for i in s6: 
    print(i)

# 下标获取具体值
s6[1] 

# 返回前2个值,默认返回前5个
s6.head(2) 

# 返回最后1个值,默认返回后5个
s6.tail(1) 

# 获取s对象的索引 Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
s6.index 

# s对象的索引转换为列表
s6.index.to_list() 

# s对象中数据的基础统计信息
s6.describe()
# 返回结果及说明如下
#count    6.000000 # s对象一共有多少个值
#mean     2.500000 # s对象所有值的算术平均值
#std      1.870829 # s对象所有值的标准偏差
#min      0.000000 # s对象所有值的最小值
#25%      1.250000 # 四分位 1/4位点值
#50%      2.500000 # 四分位 1/2位点值
#75%      3.750000 # 四分位 3/4位点值
#max      5.000000 # s对象所有值的最大值
#dtype: float64
# 标准偏差是一种度量数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。
# 四分位数(Quartile)也称四分位点,是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。

# series对象转换为df对象
s6.to_frame()
s6.reset_index()

三、DataFrame

3.1 创建DF对象

DataFrame的创建有很多种方式

  • Serires对象转换为df:s.to_frame()以及s.reset_index()
  • 读取文件数据返回df:pd.read_csv('csv格式数据文件路径')的方式获取了df对象
  • 使用字典、列表、元组创建df:接下来就展示如何使用字段、列表、元组创建df
    • 使用字典加列表创建df,使默认自增索引
       df1_data = {
       '日期': ['2021-08-21', '2021-08-22', '2021-08-23'],
       '温度': [25, 26, 50],
       '湿度': [81, 50, 56] }
       df1 = pd.DataFrame(data=df1_data)
       df1
      
      在这里插入图片描述
    • 使用列表加元组创建df,并自定义索引
      df2_data = [
      ('2021-08-21', 25, 81),
      ('2021-08-22', 26, 50),
      ('2021-08-23', 27, 56)]
      
      df2 = pd.DataFrame(
      data=df2_data, 
      columns=['日期', '温度', '湿度'],
      index = ['row_1','row_2','row_3'] # 手动指定索引)
      df2
      

在这里插入图片描述

3.2 DataFrame对象常用API

DataFrame对象常用API与Series对象几乎相同

# 返回df的行数
len(df2)

# df中数据的个数
df2.size

# df中的行数和列数,元组 (行数, 列数)
df2.shape

# 返回列名和该列数据的类型
df2.dtypes

# 返回nparray类型的2维数组,每一行数据作为一维数组,所有行数据的数组再构成一个二维数组
df2.values

# 返回df的所有列名
df2.columns

# df遍历返回的只是列名 
for col_name in df2: 
    print(col_name)

# 返回df的索引对象
df2.index

# 返回第一行数据,默认前5行
df2.head(5)

# 返回倒数第1行数据,默认倒数5行
df2.tail(5)

# 返回df的基本信息:索引情况,以及各列的名称、数据数量、数据类型
df2.info() # series对象没有info()方法

# 返回df对象中所有数字类型数据的基础统计信息
# 返回对象的内容和Series.describe()相同
df2.describe()

# 返回df对象中全部列数据的基础统计信息
df2.describe(include='all')

4.3 DataFrame对象的运算

​ 当DataFrame和数值进行运算时,DataFrame中的每一个元素会分别和数值进行运算,但df中的数据存在非数值类型时不能做加减法运算

​ 两个DataFrame之间、以及df和s对象进行计算,和2个series计算一样,会根据索引的值进行对应计算:当两个对象的索引值不能对应时,不匹配的会返回NaN

  • df和数值进行运算
f2 * 2 # 不报错
df2 + 1 # 报错,因为df2中有str类型(Object)的数据列
  • df和df进行运算
# 索引完全不匹配
df1 + df2 

# 构造部分索引和df2相同的新df
df3 = df2[df2.index!='row_3']
df3 

# 部分索引相同
df2 + df3 

# 返回结果如下
   日期 温度 湿度
0    NaN    NaN    NaN
1    NaN    NaN    NaN
2    NaN    NaN    NaN
row_1    NaN    NaN    NaN
row_2    NaN    NaN    NaN
row_3    NaN    NaN    NaN

            日期    温度    湿度
row_1    2021-08-21    25    81
row_2    2021-08-22    26    50

                        日期    温度    湿度
row_1    2021-08-212021-08-21    50.0    162.0
row_2    2021-08-222021-08-22    52.0    100.0
row_3    NaN    NaN    NaN

总结:在Pandas中,两个df对象如果进行加法运算,则要遵循以下原则:

① 索引相同,则相同索引行进行合并操作

② 索引不同,则也保留所有元素,但是元素值都设置为NaN


总结

在Pandas中,两个df对象如果进行加法运算,则要遵循以下原则:

① 索引相同,则相同索引行进行合并操作

② 索引不同,则也保留所有元素,但是元素值都设置为NaN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值