摘要:在数据科学和数据分析领域,Python的pandas库堪称基石般的存在。它提供了高效、灵活、明确的数据结构,让数据处理与分析工作变得更加轻松。本文将通过10个精心设计的案例,带你快速入门Pandas,掌握其核心用法。
在数据科学和数据分析领域,Python的pandas库堪称基石般的存在。它提供了高效、灵活、明确的数据结构,让数据处理与分析工作变得更加轻松。本文将通过10个精心设计的案例,带你快速入门Pandas,掌握其核心用法。
继续淦
DataFrame是Pandas中用于处理表格数据的核心数据结构,它类似于Excel表格或SQL中的表。我们先从创建一个简单的DataFrame开始。
import pandas as pd# 创建一个字典,键为列名,值为列数据data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}# 使用字典创建DataFramedf = pd.DataFrame(data)print(df)运行上述代码,你会看到一个包含三列(Name、Age、City)和三行数据的表格输出。通过将Python字典传递给pd.DataFrame函数,Pandas自动将字典的键转换为列名,值转换为对应列的数据。
在实际工作中,我们常常需要从外部文件读取数据到Pandas中进行处理,CSV(逗号分隔值)文件是一种常见的数据存储格式。
import pandas as pd# 读取CSV文件,假设文件名为 'data.csv'df = pd.read_csv('data.csv')print(df.head)这里使用pd.read_csv函数读取名为data.csv的文件,并将其内容存储在一个DataFrame中。df.head方法默认展示DataFrame的前5行数据,方便我们快速预览数据的结构和内容。如果CSV文件有特殊的分隔符、编码格式等,read_csv函数也提供了丰富的参数进行调整。
了解数据的基本特征是进行数据分析的第一步,Pandas提供了便捷的方法来获取这些信息。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 查看数据基本信息print('数据基本信息:')df.info执行df.info后,你将看到每列的数据类型、非空值数量以及DataFrame整体的内存使用情况。这有助于我们判断数据是否存在缺失值,以及各列的数据类型是否符合预期,例如数值列是否被错误地识别为字符串类型等。
在处理数据时,我们往往只对部分列感兴趣,Pandas允许我们轻松地选择特定的列。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 选择Name列name_column = df['Name']print(name_column)通过df['列名']的方式,我们可以从DataFrame中提取出指定的列,返回的结果是一个Pandas的Series对象,它可以看作是DataFrame中的一维列数据。如果需要选择多列,可以传递一个列名列表给df,如df[['Name', 'Age']]。
除了选择列,筛选符合特定条件的行数据也是常见操作。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 筛选年龄大于30的行filtered_df = df[df['Age'] > 30]print(filtered_df)在这个案例中,df['Age'] > 30是一个布尔条件,它会对Age列的每个元素进行判断,返回一个布尔值的Series。将这个布尔Series作为索引传递给df,Pandas就会筛选出满足条件(即对应布尔值为True)的行,返回一个新的DataFrame。
根据已有数据创建新的列,能帮助我们衍生出更多有价值的信息。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 添加一个新列,根据Age列的值判断是否成年df['IsAdult'] = df['Age'] >= 18print(df)通过直接为DataFrame赋值新的列名,并根据已有列计算新列的值,我们轻松添加了IsAdult列。新列中的每个元素根据Age列对应元素是否大于等于18来确定为True或False。
当某些列不再需要时,我们可以将其从DataFrame中删除。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 添加一个临时列用于演示删除操作df['Temp'] = 'SomeValue'# 删除Temp列df = df.drop('Temp', axis=1, errors='ignore')print(df)这里先添加了一个临时列Temp,然后使用df.drop方法删除它。axis=1表示删除列(axis=0表示删除行),errors='ignore'确保在列不存在时不会报错。删除操作默认返回一个新的DataFrame,如果要在原DataFrame上进行修改,可以添加参数inplace=True,但一般不建议这么做,以免数据意外被修改。
对数据进行排序能帮助我们更直观地观察数据特征和规律。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 按照年龄升序排序sorted_df = df.sort_values(by='Age')print(sorted_df)df.sort_values方法用于对DataFrame进行排序,by='Age'指定按照Age列进行排序。默认情况下,排序是升序的,如果要降序排序,可以添加参数ascending=False。排序后的结果返回一个新的DataFrame,原DataFrame保持不变。
分组统计是数据分析中的常用操作,Pandas的分组功能非常强大。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 35, 25, 30],'City': ['New York', 'Los Angeles', 'Chicago', 'New York', 'Los Angeles']}df = pd.DataFrame(data)# 按城市分组,计算每个城市的平均年龄grouped = df.groupby('City')['Age'].meanprint(grouped)首先使用df.groupby('City')按City列对数据进行分组,然后对每个分组的Age列使用mean方法计算平均值。最终得到的结果是一个以城市为索引,平均年龄为值的Series。我们还可以对分组后的数据进行多种聚合操作,如求和(sum)、计数(count)、求最大值(max)等。
真实世界的数据往往存在缺失值,正确处理缺失值对分析结果至关重要。
import pandas as pdimport numpy as npdata = {'Name': ['Alice', 'Bob', np.nan, 'David'],'Age': [25, np.nan, 35, 25],'City': ['New York', 'Los Angeles', 'Chicago', np.nan]}df = pd.DataFrame(data)# 删除包含缺失值的行df = df.dropnaprint(df)np.nan用于表示缺失值。df.dropna方法会删除DataFrame中任何包含缺失值的行,返回一个不包含缺失值的新DataFrame。如果只想删除全是缺失值的行,可以使用how='all'参数;如果要删除包含一定数量以上缺失值的行,可以使用thresh参数。此外,还可以使用fillna方法对缺失值进行填充,如用特定的值或根据一定规则进行插值填充。
通过这10个案例,读者可以对Pandas的基础操作有了初步认识。Pandas的功能远不止于此,随着学习的深入,读者会发现它在数据清洗、数据重塑、合并数据集等方面都有着强大的能力,为数据分析工作提供有力支持。不断实践和探索这些功能,将能更好地驾驭数据,从数据中挖掘出有价值的信息。
还是那句话:干中学,学中干
如果觉得不错的话,麻烦点个关注,收藏谢谢。
毕竟:
我太想进步了
来源:汽车年