【python】pandas模块使用总结

python的pandas模块

pandas是一个提供了数据操作和数据分析工具的模块。它支持两种主要数据结构:Series和DataFrame。
Series是一种类似于NumPy数组的对象,它由一组数据(任何NumPy数据类型)以及一组与之相关的数据标签(index)组成。
DataFrame则是一种二维表格类型数据结构,它可以容纳不同数据类型的列,包括数字,字符串和布尔值等。它类似于Excel或SQL表格。
在使用pandas时,我们通常需要进行的操作包括读取数据、数据清洗、数据分析和数据可视化等。
使用pandas可以大大提高数据处理的效率和准确性,特别是在数据预处理、建模和报表制作等方面。它是数据科学的核心之一,非常值得学习和掌握。

pands在日常数据处理中的使用方法总结了七大类,如果更详细的使用说明和更全面的函数说明可以浏览官网:https://pandas.pydata.org/
首先导入pandas包

import pandas as pd

一、创建

DataFrame的创建可以由多种方式创建,比如从列表、csv、excel、json等格式

  1. 自定义创建
import pandas as pd
import numpy as np
df_define = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
       "date":pd.date_range('20130102', periods=6),
       "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
       "age":[23,44,54,32,34,32],
       "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
       "price":[1200,np.nan,2133,5433,np.nan,4432]},
      columns =['id','date','city','category','age','price'])
  1. 从csv文件导入
import pandas as pd

df = pd.DataFrame(pd.read_csv('csv_path.csv'))
  1. 从excel文件导入
import pandas as pd

df_excel = pd.DataFrame(pd.read_excel('excel_path.excel', index_col = None))

二、基础属性信息

  1. 查看全部数值
df_values = df.values
  1. 维度查询
df_shape = df.shape
  1. 基础信息
df_info = df.info
  1. 查看所有的行索引名
df_index = df.index
df_index_values = df.index.values
  1. 查看所有的列索引名
df_column = df.columns
df_columns_values = df.columns.values
  1. 每一列数据格式
df_dtypes = df.dtypes
  1. 指定列数据格式
df_only_dtypes = df['name'].dtypes

三、数值信息

  1. 查看指定列的数值
df_column_value = df['name'].values
  1. 查看指定行的数值
df_row_value = df.iloc[1].values
  1. 查看空值
df_isnull = df.isnull()
  1. 查看指定列的空值
df_column_isnull = df['name'].isnull
  1. 查看开头和结尾的数值
# 默认五行
df_head = df.head()
df_tail = df.tail()
  1. 按索引提取指定行的数据
df_loc_2 = df.loc[2]
  1. 按索引提取范围数据
df_iloc = df.iloc[0:3]
# 提取几行几列
df_iloc_column = df.iloc[:3,:2]
# 提取某行某列
df_iloc_com = df.iloc[[0,1,2],[0,1]]
print(df_iloc)
print(df_iloc_column)
print(df_iloc_com)
  1. 提取截止到某日的数据
# 设置索引
df_ix = df.set_index('dt')
df_ix_dt = df_ix[:'2023-01-03']
  1. 提取截止到某日的某几列数据
df_ix_column = df_ix.loc[df_ix.index > '2023-01-02',['name']]

四、数据过滤

  1. 过滤某属性大于n的行
df_filter_age = df[df.age > 10]
  1. 过滤某属性大于n的行,仅要name列
df_filter_only_age = df['name'][df.age > 10]
  1. 过滤列表中出现的值
fliter_list = ['tom','jery']
df_filter_list_value = df[df.name.isin(fliter_list)]
  1. 多条件过滤
# 过滤出name='tom'并且age=1
df_select_and = df.loc[(df['name'] == 'tom') & (df['age'] == 1),['name','age']]
# 过滤出name='tom'或者age>1的
df_select_or = df.loc[(df['name'] == 'tom') | (df['age'] > 1), ['name','age']]
  1. 排序
# 过滤name!='tom'后按照age排序
df_select_sort = df.loc[(df['name'] != 'tom'), ['name','age']].sort_values(['age'], ascending=False)

五、数据计算

  1. 计数
# 对name列计数
df_count = df.groupby('name').count()
  1. 求和
df_sum = df['age'].sum()
  1. 最大值
df_max = df['age'].max()
  1. 最小值
df_min = df['age'].min()
  1. 平均值
df_avg = df['age'].mean()
  1. 分组聚合
# 按照name分组,取age的count、mean、sum
df_agg = df.groupby('name').agg({'age':['count', 'mean', 'sum']})
print(df_max)
print(df_min)
print(df_avg)
print(df_agg)
'''
sum:求和
mean: 平均值
count:计数
std: 标准差
var: 方差
min: 最小值
max: 最大值
median: 中位数
quantile: 分位数
cov: 协方差
'''

六、数据分析

  1. 数据采样
# 简单采样
df_sample = df.sample(n=3)
# 设置权值
weights = [0.3,0.3,0.3,0.4]
df_sample_weight = df.sample(n=2, weights=weights)
# 放回采样
df_replace_true = df.sample(n=2, replace=True)

# 不放回采样
df_replace_false = df.sample(n=2, replace=False)
  1. 数据表统计
df_desc = df.describe().round(2).T
  1. 相关性分析
df_corr = df.corr()
# 两个字段的相关性分析
df_corr_column = df['age'].corr(df['age'])

七、数据输出

  1. 输出到csv
df.tocsv('path.csv')
  1. 输出到excel
df.to_excel('path.xlsx',sheet_name='sheet_name')

八、注意事项

  1. 避免直接修改原始数据:Pandas中的数据结构是可变的,如果直接修改原始数据,会影响到整个数据集。可以使用.copy()方法创建一个副本,防止修改原始数据。
  2. 处理缺失值:Pandas中的缺失值用NaN表示。在处理缺失值时,可以使用fillna()方法来填充缺失值,使用dropna()方法来删除缺失值。
  3. 索引和选择:Pandas中的索引和选择功能十分强大,但是需要注意的是,当使用.loc()方法时,包含了结尾的元素,并且使用整数索引时需要使用iloc()方法。
  4. 数据类型和格式:Pandas中的数据类型非常灵活,可以使用astype()方法转换数据类型。在读取和写入数据时,需要注意数据格式和类型,以避免不必要的错误。
  5. 性能和内存:Pandas中的一些操作可能会消耗很多内存,可以使用groupby()方法等一些高效的方式来处理数据。
  6. 规范化数据:在进行数据分析工作前,需要对数据进行规范化处理,例如处理重复值、异常值等。
  7. 可视化数据:Pandas中提供了强大的可视化功能,可以使用matplotlib或seaborn库来创建数据可视化图表。
  8. 处理日期和时间:Pandas中提供了一些实用的方法来处理日期和时间,例如pd.to_datetime()和pd.date_range()等方法。在处理时区和跨时区数据时,也需要注意时区设置。

九、补充说明

pandas中的loc和iloc都是用于选取数据的方法,但两者的使用方式、效果和用途有些不同。

  1. loc是基于标签位置进行选取的方法,iloc是基于整数位置进行选取的方法。
  2. loc使用的索引是基于数据的行和列的标签,通过指定行和列的标签来进行选取数据。
  3. iloc使用的索引是基于整数的位置,通过指定行和列的位置来进行选取数据。
  4. loc可以使用布尔索引进行数据的选取,而iloc不支持布尔索引。
  5. loc的选区时包含的是右侧和下方的所有值,而iloc选区时,不包含右侧和下方的最后一个值。
  6. loc只能使用行和列的标签,使用较为灵活,适合于选取标签比较明确的数据;iloc选区时是通过位置编号进行选取的,使用较为固定,适合于选取数据点比较明确的数据。
    因此,在使用pandas进行数据选取时,需要根据数据的标签或位置来选择合适的方法。
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值