pandas复习

本文将深入讲解如何使用Anaconda和xlrd下载数据,解析csv、excel和txt文件,理解pandas的基本数据结构和函数,包括数据清洗、特征统计、索引操作、分组与聚合、连接数据、缺失值处理及时间序列分析。从Series和DataFrame出发,探讨关键操作技巧和常见问题解决方法。
部署运行你感兴趣的模型镜像

基础复习

下载软件与核验:
工欲善其事必先利其器,学习要求下载anaconda和xlrd,并且pandas的版本号不低于1.6。查看pandas的版本的方法:

import pandas as pd
pd.__version__

读取数据(主要以csv, excel为主),txt也可以但是需要正则表达式的知识。
csv读取实列:

df_csv = pd.read_csv('../data/my_csv.csv')
df_csv

csv读取实列:

df_excel = pd.read_excel('../data/my_excel.xlsx')
df_excel

读取txt简易写法:

df_txt = pd.read_table('../data/my_table.txt')
df_txt

公共参数:index_col表示把至少n列作为索引(n为传参的列个数),usecols表示读取列的集合(默认读取所有的列),parse_dates表示需要转化为时间的列,nrows表示读取的数据行数
基本数据结构
Series由四个部分组成,分别是序列的值data、索引index、存储类型dtype、序列的名字name。其中,索引也可以指定它的名字,默认为空。
DataFrame:在Series的基础上增加了列索引,dataframe可以看作是series的集合
基本函数与属性:
columns属性读取列名:

df = pd.read_csv("../data/billboard.csv")
df.columns

head, tail函数分别表示返回表或者序列的前n行和后n行,其中n默认为5:

df.head(10)
df.tail(3)

info, describe分别返回表的信息概况和表中数值列对应的主要统计量 :
在这里插入图片描述
在这里插入图片描述
特征统计函数(仅常用):sum(求和), mean(平均), median(中位数), std(样品标准偏差), max(最大值), min(最小值)
在这里插入图片描述
唯一值函数:
unique和nunique可以分别得到其唯一值组成的列表(unique前必须有列名,否则报错)和唯一值的个数
替换函数:
pandas中的替换函数可以归纳为三类:映射替换、逻辑替换、数值替换。基础分享研究映射替换的replace就好。(写法不单一,用最简单的)
在这里插入图片描述
排序函数:
排序共有两种方式,其一为值排序,其二为索引排序,对应的函数是sort_values和sort_index。
在这里插入图片描述
在这里插入图片描述
apply方法:
官方代码:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)

实现所有值+1:

df=pd.DataFrame([[1,2]]*3,columns=["A","B"])
df=pd.DataFrame({
    "A":[1,2]*2,
    "B":[1,2]*2
})
df.apply(lambda x:x+1,axis=0)

注意:apply的自由度很高,但这是以性能为代价的。一般而言,使用pandas的内置函数处理和apply来处理同一个任务,其速度会相差较多,因此只有在确实存在自定义需求的情境下才考虑使用apply

pandas索引

索引器
表的列索引:
通过[列名]可以从DataFrame中取出相应的列,返回值为Series;如果要取出多个列,则可以通过[列名组成的列表],其返回值为一个DataFrame
在这里插入图片描述
loc索引器:
l一般形式是loc[r, c],其中第一个r代表行的选择,第二个c代表列的选择,如果省略第二个位置写作loc[r],这个r是指行的筛选.

df = pd.read_csv('../data/movie.csv')
df.dropna(inplace=True)
df.set_index("director_name",inplace=True)
df.loc[["James Cameron"],["color"]]

在这里插入图片描述
iloc索引器:
iloc的使用与loc类似,共有五类合法对象,分别是:整数、整数列表、整数切片、布尔列表以及函数,函数的返回值必须是前面的四类合法对象中的一个,其输入同样也为DataFrame本身
查询全部:

df.iloc[:,:]

查询1、2行的第0、1列数据

df.iloc[1:3,0:2]

query方法:
在pandas中,支持把字符串形式的查询表达式传入query方法来查询数据,其表达式的执行结果必须返回布尔列表
比如我们查询索引<=3、duration>=150并且director_name在[“James Cameron”,“Gore Verbinski”]中的可以这么写

df.query(
    '(index <= 3)&'
    '(duration >= 150)&'
    '(director_name in ["James Cameron","Gore Verbinski"] )'
)

分组
分组代码的一般模式:df.groupby(分组依据)[数据来源].使用操作。其中,分组依据可以加布尔表达式进行筛选。后面注释表示其他常用函数:

gb = df.groupby("director_name")
gb.ngroups #分组个数
gb.groups.keys() #分组的字典的key

聚合函数:
内置聚合函数:max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod
不满足于内置聚合函数可以使用agg:
官方写法:

DataFrame.agg(func,axis = 0* args,** kwargs )

其中,func是函数的名字(不要带口号,带口号是调用),axis可以取0和1分别代表行列,后面表示传递的参数
长宽表的变形:
长宽表是对于某一个特征而言的。例如:一个表中把姓名存储在某一个列中,那么它就是关于姓名的长表;如果把姓名作为列名,列中的元素是某一其他的相关特征数值,那么这个表是关于姓名的宽表
pivot语法:
pivot(index=‘i’, columns=‘c’, values=‘想要展示的数值列’)
新生成表的列索引是columns对应列的unique值,而新表的行索引是index对应列的unique值
连接
这里只说最常用的merge以及concat
merge:这里官方参数表可以参考一下:
在这里插入图片描述
concat:
这个内容比较多,可能要专门写博客讨论,以下是官方英文文档
官方文档
pandas1.1.0以后的连接函数:
compare:
它能够比较两个表或者序列的不同处并将其汇总展示
缺失数据处理:
缺失数据可以使用isna或isnull(两个函数没有区别)来进行查看,如果需要统计缺失比,则可以在后面加上mean。代码如下:

df.isna().mean()

如果想要同时对几个列,检索出全部为缺失或者至少有一个缺失或者没有缺失的行,可以使用isna, notna和any, all的组合。比如我们要查director_name、color都缺失的行可以这么写:

tmp = df[["director_name","color"]].isna().all()
df[tmp]

说明:如果不存在满足条件的行会报错。
缺失信息的删除:
dropna:
参数为轴方向axis(默认为0,即删除行)、删除方式how(any和all,不同版本这个的默认值不一定一样)、备选的删除子集subset
缺失信息的填充:
fillna:
三个常用参数:value, method, limit。其中,value为填充值,可以是标量,也可以是索引到元素的字典映射;method为填充方法,有用前面的元素填充ffill和用后面的元素填充bfill两种类型,limit参数表示连续缺失值的最大填充次数。
时序数据:
时间模块:
datetime,这个对象含有多个子包,可以实现多个层面的时间操作。
datetime.date可以操作:年月日(可以通过str函数转化为字符串),举个列子:

import datetime
today_ymd = datetime.date.today()
today_ymd

datetime,datetime操作:年月日时分秒,用法同上。不过由于精度原因,这里支持now函数获取当前时间。
时间戳:
单个时间戳的生成利用pd.Timestamp实现,举个列子:

ts = pd.Timestamp('2022/4/19')
ts

这样写的时分秒都是0,我们可以继续补全:

ts = pd.Timestamp('2022-4-19 20:10:20')
ts

时间模块与时间戳的珠联璧合:
上面两个知识点和字符串之间可以互相补足短板以及转化,如下实例:
在这里插入图片描述
同时,datetime类型还可以作为索引。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 关于 NumPy、Pandas 和 Matplotlib 的期末复习资料 #### 使用 NumPy 进行数值计算 NumPy 是 Python 中用于科学计算的基础库,提供了多维数组对象以及各种派生对象(如掩码数组和矩阵)。这些工具能够高效处理大型数据集。 ```python import numpy as np # 创建一维数组 arr = np.array([1, 2, 3]) # 数组运算 result = arr * 2 print(result) # 输出: [2 4 6] # 多维数组创建与操作 matrix = np.arange(9).reshape((3, 3)) print(matrix) # 高效的数学函数应用 squares = np.square(matrix) print(squares) ``` #### 数据分析中的 Pandas 应用 Pandas 提供高性能的数据结构和数据分析工具。它特别适合处理表格型数据,在金融领域尤其受欢迎。 ```python import pandas as pd # 构建 DataFrame 对象 data = {'A': ['foo', 'bar'], 'B': [1, 2]} df = pd.DataFrame(data) # 基本统计描述 summary_stats = df.describe() # 缺失值填充 filled_df = df.fillna(value=0) # 排序功能展示 sorted_by_column_b = df.sort_values(by='B') ``` #### 可视化图表制作——Matplotlib 实战演练 Matplotlib 是一个强大的绘图库,支持多种类型的图形输出,包括线形图、柱状图、饼图等。下面是一个简单的折线图例子[^1]: ```python from matplotlib import pyplot as plt from datetime import datetime dates = [ datetime(year=2020, month=i, day=15) for i in range(1, 7)] values = [i ** 2 for i in dates] plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m')) plt.gca().xaxis.set_major_locator(mdate.MonthLocator()) plt.plot(dates, values) plt.gcf().autofmt_xdate() plt.title('Time Series Plot Example') plt.xlabel('Date') plt.ylabel('Value Squared') plt.show() ``` 此外,还有散点图的例子来帮助理解不同变量间的关系[^2]: ```python import matplotlib.pyplot as plt x_points = [1, 2, 3, 4, 5] y_points = [2, 3, 5, 7, 11] plt.scatter(x_points, y_points) plt.title("Scatter Plot Demonstration") plt.xlabel("X Axis Label") plt.ylabel("Y Axis Label") plt.show() ``` 对于更复杂的定制需求,则可以通过调整参数来自定义坐标轴标签、网格线以及其他样式属性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值