Pandas-入门

Pandas

"""
Pandas
    DataFrame: 可以把DataFrame看作由Series对象组成的字典, 其中key是列名, 值是Series
    Series: Series和Python中的列表类似, 但是Series中每个元素的数据类型必须相同
    没有行的数据结构:
        即使是行数据, 也会通过列的方式进行展示
"""

1.1 Series


"""
创建Series对象
    Series 是pandas中的最基本的数据结构对象, 是DataFrame的列对象或者行对象
    Series 本身具有行索引
    
    Series 是一种类似于一维数组的对象, 有两个部分组成
    1. values 一维数组的数据(numpy.ndarray类型)
    2. index 相关的数据行索引标签, 如果没有为数据指定索引, 于是自动创建一个 0 到 n-1 的整形索引
"""
import pandas as pd
import numpy as np

# 创建 numpy.ndarray 对象
n = np.array([1, 2, 3])
print(n)
print(type(n))

# 构建Series对象
s = pd.Series(data=n)
print(s)
print(type(s))

# 创建Series对象
s = pd.Series(["hello", 12])
print(s)
print(type(s[1]))

# 通过元祖创建Series对象
tuple = (1, 2, 3)
s = pd.Series(tuple)
print(s)

# 通过字典创建Series对象
# 其中 key 作为 Series 对象的索引值 value 作为Series对象的数据值
d = {"a": 1, "b": 2, "c": 3}
s = pd.Series(d)
print(s)

1.1.1 常用属性

"""
常用属性:
    loc   -- 使用索引值获取数据
    iloc  -- 使用行号获取数据
    dtype dtypes -- Series 内容的数据类型
    T            -- Series的转置矩阵
    shape        -- 数组的维度
    size         -- Series 中元素的数量
    values       -- Series 的数据值
    index        -- Series 的索引值
"""
# 读取 csv 文件
data = pd.read_csv('data/nobel_prizes.csv', index_col='id')
# 展示数据中的前 5 行 数据
print(data.head())

# 通过使用索引值获取数据
first_row = data.loc[1]
print(first_row) 

# 使用行号获取数据
first_row = data.iloc[1]
print(first_row) 

1.1.2 常用方法

"""
常用方法
    append                -- 连接两个或多个Series
    corr                  -- 计算与另一个Series的相关系数
    cov                   -- 计算与另一个Series的协方差
    describe              -- 计算常见统计量
    drop_duplicates       -- 返回去重之后的Series
    equals                -- 判断两个Series是否相同
    get_values            -- 获取Series的值,作用与values属性相同
    hist                  -- 绘制直方图
    isinSeries            -- 中是否包含某些值
    min                   -- 返回最小值
    max                   -- 返回最大值
    mean                  -- 返回算术平均值
    median                -- 返回中位数
    mode                  -- 返回众数
    quantile              -- 返回指定位置的分位数
    replace               -- 用指定值代替Series中的值
    sample                -- 返回Series的随机采样值
    sort_values           -- 对值进行排序
    to_frame              -- 把Series转换为DataFrame
    unique                -- 去重返回数组
    value_counts          -- 统计不同值数量
    keys                  -- 获取索引值
    head                  -- 查看前5个值
    tail                  -- 查看后5个值
"""
# 布尔类型索引
# 从 scientists.csv 数据集中,展示出大于 Age 列的平均值的具体值    
dfm = pd.read_csv('data/scientists.csv')
print(dfm)
print(dfm.head())

# 通过布尔值获取 大于 Age 列的平均值的具体值 元素
dfm[dfm['Age'] > dfm.Age.mean()] 

"""
series 的运算
    Series 与 数据类型变量计算时, 变量会与Series中每个元素进行计算
    两个 Series之间计算时, 索引相同的元素会进行计算, 索引值不同的元素的计算结果会用NaN进行填充
"""

2.1 DataFrame

"""
DataFrame
    DataFrame 是一个表格型数据结构, 包含任意多个Series
    DataFrame 是Pandas中最基本的数据结构对象 可以认为是一个二维数据表, 有行有列有索引
    DataFrame 许多属性和方法 与 Series 相同

"""
# 字典方式创建
dict_data = {
    'id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
}
dfm = pd.DataFrame(data=dict_data)
print(dfm)
print(type(dfm))

# 通过index参数指定索引 columns 参数指定列的位置
dfm = pd.DataFrame(data=dict_data, index=['A', 'B', 'C'], columns=['id', 'name', 'age'])
print(dfm)

# 列表 + 元祖方式创建
list_data = [(1, '张飞', 18), (2, '关羽', 20), (3, '刘备', 22)]
dfm = pd.DataFrame(list_data, index=['A', 'B', 'C'], columns=['id', 'name', 'age'])
print(dfm)

2.1.1 基础属性 基本函数

"""
DataFrame 基础属性 基本函数
"""
# 加载数据集, 得到df对象
dfm = pd.read_csv('data/scientists.csv')

print('=============== 常用属性 ===============')
# 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
print(dfm.shape)
# 查看数据值个数, 行数*列数, NaN值也算
print(dfm.size)
# 查看数据值, 返回numpy的ndarray类型
print(dfm.values)
# 查看维度数
print(dfm.ndim)
# 返回列名和列数据类型
print(dfm.dtypes)
# 查看索引值, 返回索引值对象
print(dfm.index)
# 查看列名, 返回列名对象
print(dfm.columns)
print('=============== 常用方法 ===============')
# 查看前5行数据
print(dfm.head())
# 查看后5行数据
print(dfm.tail())
# 查看df的基本信息
dfm.info()
# 查看df对象中所有数值列的描述统计信息
print(dfm.describe())
# 查看df对象中所有非数值列的描述统计信息
# exclude:不包含指定类型列
print(dfm.describe(exclude=['int', 'float']))
# 查看df对象中所有列的描述统计信息
# include:包含指定类型列, all代表所有类型
print(dfm.describe(include='all'))
# 查看df的行数
print(len(dfm))
# 查看df各列的最小值
print(dfm.min())
# 查看df各列的非空值个数
print(dfm.count())
# 查看df数值列的平均值
print(dfm.mean())

2.1.2 索引相关操作

"""
DataFrame 索引相关操作
    Pandas 关于DataFrame和Series相关API中 参数有 inplace 的 默认值是 False
    即会返回对象的副本 不会对原始对象数据进行更改
    如果 设置 inplace=True 就会直接修改原来的数据, 但是该方法就没有返回值了
"""
# 读取文件, 不指定索引, Pandas会自动加上从0开始的索引
movie = pd.read_csv('data/movie.csv')  
movie.head()

# 设置 电影名 为索引列 不修改原始数据
new_movie = movie.set_index('movie_title')
new_movie.head()

# 如果加上 inplace=True, 则会修改原始的df对象
movie.set_index('movie_title', inplace=True)  
movie.head()    # 原始的数据并没有发生改变

# 取消之前设置的索引   这里 加上inplace, 就是直接修改 源数据
movie.reset_index(inplace=True) 
movie.head()

2.1.3 修改行名 和 列索引值

"""
DataFrame 修改行名 和 列索引值
    方式一 rename()函数, 可以对原有的行索引名 和 列名进行修改
    方式二 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
"""
# 方式一 rename()函数, 可以对原有的行索引名 和 列名进行修改
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
# 前5个行索引名
movie.index[:5]  

# 前5个列名
movie.columns[:5]  

# 修改 行索引名 和 列名
idx_rename = {'Avatar': '阿凡达', "Pirates of the Caribbean: At World's End": '加勒比海盗'}
col_rename = {'color': '颜色', 'director_name': '导演名'}

# 通过rename()函数, 对原有的行索引名 和 列名进行修改
movie.rename(index=idx_rename, columns=col_rename).head()

# 方式二 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
movie = pd.read_csv('data/movie.csv', index_col='movie_title')

# 提取出 行索引名 和 列名, 并转成列表.
index_list = movie.index.tolist()
columns_list = movie.columns.tolist()

# 修改列表元素值
index_list[0] = '阿凡达'
index_list[1] = '加勒比海盗'

columns_list[0] = '颜色'
columns_list[1] = '导演名'

# 重新把修改后的值, 设置成 行索引 和 列名
movie.index = index_list
movie.columns = columns_list

# 查看数据
movie.head(5)

2.1.4 添加列

# 添加列
movie = pd.read_csv('data/movie.csv', index_col='movie_title')

# 方式一
# 通过 dfm[列名] = 值  的方式, 可以给df对象新增一列, 默认: 在df对象的最后添加一列
movie['has_seen'] = 0  

movie.head()    # 查看内容

# 方式二
# insert() 表示插入列   参数解释: loc:插入位置(从索引0开始计数), column=列名, value=值
# 总利润 = 总收入 - 总预算
movie.insert(loc=1, column='profit', value=movie['gross'] - movie['budget'])
movie.head()

2.1.5 删除列

# 删除列
# movie.drop('has_seen')  # 报错, 需要指定方式, 按行删, 还是按列删
movie.drop('has_seen', axis='columns', inplace=True)      # 按列删
# movie.drop('has_seen', axis=1, inplace=True)            # 按列删, 这里的1表示: 列

movie.drop('Avatar', axis='rows', inplace=True)           # 按行删除
# movie.drop('Avatar', axis=0, inplace=True)              # 按行删, 这里的0表示: 行
# 删除行
movie.reset_index(inplace=True)
print(movie.head())
print('*' * 30)
movie.drop([0,1], inplace=True)                    # 按行索引删
print(movie.head())

3.1 导入 导出 数据

"""
导出数据
"""
# 需求: 导出数据到 /root/output/...
# 细节: 要导出到的目的地目录, 必须存在, 即:  output目录必须存在
# 格式:  dfm.to_后缀名(路径)
# 准备原始df对象
dfm = pd.read_csv('data/scientists.csv')
dfm
# 2. 对上述的df做操作, 模拟: 实际开发中, 对df对象做处理
# 需求: 筛选出 年龄 大于 平均年龄的数据
new_dfm = dfm[dfm.Age > dfm.Age.mean()]
new_dfm
# 3. 把上述的df对象, 写出到目的地中
# pickle: 比较适合 存储中间的df数据, 即: 后续要频繁使用的df对象, 可以存储下来
# new_dfm.to_pickle('output/scientists_pickle.pkl')      # pickle文件的后缀名可以是: .p, .pkl, .pickle

# excel, csv等文件, 适合于: 存储最终结果
# 注意: 有三个包需要安装一下, 如果你读写excel文件, 但如果你用的是Anaconda, 已经有了, 无需安装
# new_dfm.to_excel('output/scientists.xls')                                 # 会把索引列也当做数据, 写出
# new_dfm.to_excel('output/scientists_noindex.xls', index=False, sheet_name='ai20')   # 不导出索引列, 且设置表名

# csv(用逗号隔开), tsv(用\t隔开), 适用于 数据共享, 整合等操作 
# new_dfm.to_csv('output/scientists.csv')                        # 会把索引列也当做数据, 写出
# new_dfm.to_csv('output/scientists_noindex.csv', index=False)     # 不导出索引列

# 如果每行数据的 各列值之间用逗号隔开是 csv, 用\t隔开是 tsv
new_dfm.to_csv('output/scientists_noindex.tsv', index=False, sep='\t')     # 不导出索引列

print('导出成功!')
"""
导入数据
"""
# pickle文件
# pd.read_pickle('output/scientists_pickle.pkl') 

# excel文件
# pd.read_excel('output/scientists.xls')              
# pd.read_excel('output/scientists_noindex.xls')      

# csv文件
# pd.read_csv('output/scientists.csv')                  
# pd.read_csv('output/scientists_noindex.csv')          

pd.read_csv('output/scientists_noindex.tsv', sep='\t')  
  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pandas-official-tut-zh epub是指Pandas官方教程的中文电子书格式。Pandas是一个强大的数据分析和处理库,被广泛应用于数据科学和数据分析领域。Pandas官方教程提供了详细的指导和示例,帮助用户学习和使用Pandas库。 这本Pandas官方教程的中文电子书以epub格式提供,这意味着我们可以在支持epub格式的电子书阅读器或软件中阅读它。epub格式是一种开放的电子书标准,可以自由地在各种平台上阅读,如电脑、平板电脑、智能手机等。使用epub格式的好处是,它可以根据设备的屏幕尺寸和用户的设置自动调整页面布局和字体大小,提供更好的阅读体验。 这本教程的目标是帮助读者从零开始学习Pandas,并逐步深入了解其功能和用法。它提供了丰富的示例代码和实践演练,以帮助读者掌握Pandas的各种技术和技巧。教程涵盖了Pandas的基本数据结构,如Series和DataFrame,以及它们的索引、切片、过滤、排序等操作。此外,还介绍了Pandas的数据清洗、处理缺失值、数据合并、分组聚合等高级技术。 这本教程的中文版本使更多母语为中文的读者能够更轻松地学习和理解Pandas的概念和功能。epub格式的电子书具有良好的可读性和易于导航的特点,读者可以根据自己的需求和节奏进行学习,随时随地获取所需的知识。 总之,pandas-official-tut-zh epub是一本Pandas官方教程的中文电子书,提供了全面且易于理解的Pandas学习资源,可帮助读者入门并熟练使用该库。无论是初学者还是有经验的数据科学家,都可以从中受益,并将其应用于实际的数据分析项目中。 ### 回答2: pandas-official-tut-zh epub是一本关于pandas库的官方指南的电子书。Pandas是一个强大的数据分析工具,它使用Python编程语言开发。这本电子书提供了从基础概念到高级用法的全面介绍,将帮助读者掌握该库的各种功能和技巧。 该电子书以易于理解和直观的方式解释了pandas库的核心概念,如数据结构、索引和选择、数据聚合和生成等。读者可以通过电子书学习如何使用pandas来处理、清洗和分析各种类型的数据,包括结构化数据、时间序列数据和文本数据。 电子书的内容结构清晰,各章节之间有明确的连贯性,使读者可以系统地学习和理解pandas库的功能和用法。除了基本的数据操作,该电子书还介绍了一些高级特性,如数据合并、重塑和透视等,以及与其他Python工具库的集成。 pandas-official-tut-zh epub不仅提供了理论知识,还包含了丰富的实例代码和可运行的示例,读者可以通过这些实例更深入地理解和运用pandas库。此外,该电子书还提供了一些实际的案例研究,展示了pandas在真实世界中的应用。 总之,pandas-official-tut-zh epub是一本非常有价值的电子书,适合对数据处理和分析感兴趣的读者。无论是初学者还是有一定经验的开发者,都可以从该电子书中获得关于pandas库的全面指导和实用技巧。 ### 回答3: pandas-official-tut-zh epub是一个关于Python数据分析库Pandas的中文官方教程的电子书文件。Pandas是一个强大的数据处理和分析工具,可用于处理和操作大型数据集。 首先,这本电子书是官方教程,意味着内容是由Pandas的开发团队编写的,可以保证信息的准确性和可靠性。它提供了详细的指导和示例,帮助读者了解Pandas的基本功能和高级技术。 这本教程以epub格式提供,这意味着它可以在各种电子设备上进行阅读,如电脑、平板电脑和智能手机。由于epub格式具有自适应屏幕大小和排版的优势,因此读者可以在任何设备上获得良好的阅读体验。 该教程分为多个章节,从介绍Pandas的基本概念和数据结构开始,逐步深入讲解Pandas的应用和高级功能。它涵盖了数据清洗、转换、聚合、合并等方面的常见任务,以及时间序列和数据可视化等更高级的主题。 读者可以通过学习这本教程来掌握Pandas的核心概念和操作技巧,从而更有效地进行数据分析和处理。这对于数据科学家、数据分析师和Python开发者来说都是非常有价值的资源。 总而言之,pandas-official-tut-zh epub是一本官方编写的关于Python数据分析库Pandas的中文教程电子书,为读者提供了全面而系统的学习资源,帮助他们掌握Pandas的各种功能和技术。无论是初学者还是有经验的用户都可以从中受益,并且它的epub格式使得阅读更加方便和灵活。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值