Python的DataFrame


前言

在数据分析中,数据框架(DataFrame)是一个强大的工具。它能够让我们以一种结构化的方式来处理和分析数据。Python中的Pandas库为我们提供了这种数据结构。本文将带你从零开始,逐步深入了解DataFrame的各个方面,通过实际代码来展示其应用。点击进入官方文档


一、什么是DataFrame

DataFrame是Pandas库中的一个核心数据结构,它是一个二维标签化的数据结构,可以认为它是一个Excel表格或者SQL表,具有行标签和列标签。


二、创建DataFrame

我们可以使用Pandas的DataFrame函数来创建一个DataFrame。以下是一些创建DataFrame的方法:

1. 从字典创建:

import pandas as pd  
data = {'列1': [1, 2, 3], '列2': [4, 5, 6]}  
df = pd.DataFrame(data)
df

在这里插入图片描述


2. 从列表创建:

data = [['列1', 1], ['列2', 2], ['列3', 3]]  
df = pd.DataFrame(data)
df

在这里插入图片描述


3. 从Numpy数组创建:

import numpy as np  
data = np.array([[1, 2, 3], [4, 5, 6]])  
df = pd.DataFrame(data)
df

在这里插入图片描述


三、表格对象的属性和基本方法

1. 表格对象的属性

df = pd.DataFrame(
    [['李四','女','18'],['王五','男','19']],
    columns=['姓名','性别','年龄']
)
print(df.values)   # 输出DataFrame中的数据值
print(df.index)  # 输出DataFrame的索引
print(df.columns)  # 输出DataFrame的列名
print(df.shape)  # 输出DataFrame的行数和列数

在这里插入图片描述


2. 表格对象方法

1. head()

默认情况下,df.head() 会显示DataFrame的前五行。
你可以传递一个整数n给head()方法,以显示前n行。例如,df.head(3)会显示前3行。
还可以传递一个参数axis来指定行或列。例如,df.head(3, axis=1)会显示前3列。

df.head()

在这里插入图片描述


2. info()

df.info()提供了DataFrame的简要摘要,包括索引、列名、数据类型、非空值计数以及所占用的内存大小。
它对于快速查看DataFrame的结构和基本信息非常有用。

df.info()

在这里插入图片描述


3. describe()

df.describe()为数值型列提供了统计摘要,包括计数、平均值、标准差、最小值、25%、50%、75%分位数和最大值。
对于非数值型列,它会给出计数和唯一值的摘要。
你可以传递参数如percentiles来指定其他百分比值,或者使用include参数来控制是否包括计数、平均值等。

df.describe()

在这里插入图片描述


四、查询

导入数据

import pandas as pd

data = {'电影名称': ['肖申克的救赎', '霸王别姬', '阿甘正传', '泰坦尼克号', '这个杀手不太冷', '美丽人生', '千与千寻', '辛德勒的名单', '星际穿越', '盗梦空间', '楚门的世界', '忠犬八公的故事', '海上钢琴师', '三傻大闹宝莱坞', '放牛班的春天', '机器人总动员', '无间道', '疯狂动物城', '控方证人', '大话西游之大圣娶亲'],
        '导演': ['弗兰克·德拉邦特', '陈凯歌', '罗伯特·泽米吉斯', '詹姆斯·卡梅隆', '吕克·贝松', '罗伯托·贝尼尼', '宫崎骏', '史蒂文·斯皮尔伯格', '克里斯托弗·诺兰', '克里斯托弗·诺兰', '彼得·威尔', '拉斯·霍尔斯道姆', '朱塞佩·托纳多雷', '拉吉库马尔·希拉尼', '克里斯托夫·巴哈蒂', '安德鲁·斯坦顿', '刘伟强', '拜伦·霍华德', '比利·怀尔德', '刘镇伟'],
        '电影类型': ['剧情/犯罪', '剧情/爱情/同性', '剧情/爱情', '剧情/爱情/灾难', '剧情/动作/犯罪', '剧情/喜剧/爱情/战争', '剧情/动画/奇幻', '剧情/历史/战争', '剧情/科幻/冒险', '剧情/科幻/悬疑/冒险', '剧情/科幻', '剧情', '剧情/音乐', '剧情/喜剧/爱情/歌舞', '剧情/音乐', '科幻/动画/冒险', '剧情/惊悚/犯罪', '喜剧/动画/冒险', '剧情/悬疑/犯罪', '喜剧/爱情/奇幻/古装'],
        '国家': ['美国', '中国大陆 / 中国香港', '美国', '美国 / 墨西哥', '法国 / 美国', '意大利', '日本', '美国', '美国 / 英国 / 加拿大', '美国 / 英国', '美国', '美国 / 英国', '意大利', '印度', '法国 / 瑞士 / 德国', '美国', '中国香港', '美国', '美国', '中国香港 / 中国大陆'],
        '上映年份': [1994, 1993, 1994, 1997, 1994, 1997, 2001, 1993, 2014, 2010, 1998, 2009, 1998, 2009, 2004, 2008, 2002, 2016, 1957, 1995],
        '评分': [9.7, 9.6, 9.5, 9.5, 9.4, 9.6, 9.4, 9.6, 9.4, 9.4, 9.4, 9.4, 9.3, 9.2, 9.3, 9.3, 9.3, 9.2, 9.6, 9.2],
        '评论人数': [2840854, 2104006, 2125602, 2147345, 2260275, 1306535, 2202561, 1088430, 1796592, 2029410, 1668962, 1379767, 1653357, 1832060, 1291484, 1296629, 1338701, 1893607, 540243, 1509275]}

df = pd.DataFrame(data)
df

1. 通过序列查询数据

1.1 访问单列

访问单列:表格对象 [‘列名称’] [行索引]

df['电影名称'][:5]

在这里插入图片描述


1.2 访问多列

访问多列:表格对象 [[‘列名称1’,‘列名称2’,…]] [行索引]

df[['电影名称','上映年份']][:5]

在这里插入图片描述


2. loc方法

2.1 访问单列

访问单列:表格对象.loc[行索引,‘列名称’]

print(df.loc[:5,'电影名称'])

在这里插入图片描述


2.2 访问多列

访问多列:表格对象.loc[行索引,[‘列名称1’,‘列名称2’,…]]

print(df.loc[:5,['电影名称','国家','上映年份']])
print(df.loc[:5,'电影名称':'上映年份']) # 列出电影名称到上映年份之间的前五列

在这里插入图片描述


3. iloc方法(访问单列或多列)

表格对象.iloc[行索引,列索引]
和loc方法的区别主要在列索引,iloc中的列索引表示列的序号,接收的是数字

df.iloc[:,[3,4,5]]

在这里插入图片描述


df.iloc[:,3:6] # 列出第三列到第六列的数据

在这里插入图片描述


4. query方法(条件查询)

语法:表格对象.query(查询条件字符串)

df.query('国家=="美国" and 评分>9.3')

在这里插入图片描述


5. loc方法(条件查询)

df.loc[df['国家']=='美国',:]

在这里插入图片描述


6.loc方法实现多条件查询

# loc方法实现多条件查询
c1 = df['国家']=='美国'
c2 = df['评分']>9.3
df.loc[c1&c2]

在这里插入图片描述


五、进阶操作

随着对DataFrame操作的深入,我们可以使用更高级的功能,如时间序列处理、缺失值处理等。例如,我们可以使用resample函数对时间序列数据进行重采样,使用fillna函数填充缺失值等。这些操作在数据预处理、特征工程等阶段中非常重要。


六、总结

通过本文,我们了解了什么是DataFrame,如何创建它,以及一些基础和进阶的操作。在实际的数据分析工作中,我们通常需要结合多种操作来处理和分析数据。因此,熟练掌握这些操作对于提高我们的工作效率和准确性非常重要。希望本文能帮助你更好地理解和使用DataFrame。

  • 23
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python中,DataFrame是pandas库中的一个数据结构,类似于表格或者电子表格。DataFrame可以用来处理和分析结构化数据。 要使用DataFrame,你可以使用DataFrame类的构造函数,传入一个字典、二维数组、Series对象等作为参数。你还可以通过设置index和columns参数来指定行索引和列标签。 使用loc属性可以根据行标签和列标签来访问DataFrame中的数据。例如,使用loc可以选择特定的行和列,或者使用切片操作选择连续的行和列。你可以参考引用中的链接了解更多关于loc属性的使用。 另外,如果你希望将一个字典转换为DataFrame,并且希望转换后的DataFrame的行顺序和原始数据一致,你可以使用pd.DataFrame.from_dict函数,并设置orient参数为'index'。这样转换后的DataFrame的行将按照原始字典中的顺序排列,你可以参考引用中的代码示例。 另外,如果你有一个嵌套字典,并且想将其转换为DataFrame,你可以直接使用pd.DataFrame构造函数,并传入嵌套字典作为参数。你可以参考引用中的代码示例。 总结起来,Python中的DataFrame可以通过构造函数和相关属性(如loc、iloc等)来创建和操作。可以根据需要选择不同的方法来处理和分析DataFrame中的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PythonDataFrame基础知识点](https://blog.csdn.net/u012856866/article/details/118936961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值