活动介绍

Pandas50个高级操作,必看!

preview
需积分: 0 2 下载量 123 浏览量 更新于2024-04-02 收藏 125KB DOC 举报
根据提供的文件信息,本文将详细介绍Pandas中关于数据筛选、数据类型转换的高级操作。这些技巧对于提升数据处理效率及准确性至关重要。 ### 一、复杂查询 #### 1. 逻辑运算 - **条件筛选**:可以使用逻辑运算符如`>`、`>=`、`<`、`<=`等来过滤数据。 - 示例:筛选`Q1`成绩大于36的学生。 ```python df[df['Q1'] > 36] ``` - 示例:筛选`Q1`成绩不小于60分并且属于C组的学生。 ```python df[~(df['Q1'] < 60) & (df['team'] == 'C')] ``` #### 2. 逻辑筛选 - **使用切片、.loc[] 和 .iloc[] 进行逻辑筛选**: - 使用`[]`: ```python df[df['Q1'] == 8] # Q1等于8 df[~(df['Q1'] == 8)] # Q1不等于8 df[df.name == 'Ben'] # 姓名为Ben df[df['Q1'] > df['Q2']] # Q1大于Q2 ``` - 使用`.loc[]`: ```python df.loc[df['Q1'] > 90, 'Q1':] # Q1大于90,只显示Q1列及其之后的列 df.loc[(df['Q1'] > 80) & (df['Q2'] < 15)] # Q1大于80且Q2小于15 df.loc[(df['Q1'] > 90) | (df['Q2'] < 90)] # Q1大于90或Q2小于90 df.loc[df['Q1'] == 8] # Q1等于8 df.loc[df['Q1'] > 90, 'Q1':] # Q1大于90,显示Q1列及其之后的所有列 ``` #### 3. 函数筛选 - 使用Lambda函数筛选特定条件下的数据: ```python df['Q1'][lambda s: max(s.index)] # 查找最大索引对应的值 ``` - 使用内置函数如`max()`获取最大值: ```python max(df['Q1'].index) ``` #### 4. 比较函数 - 使用Pandas提供的比较函数如`eq()`、`ne()`等进行条件筛选: ```python df[df['Q1'].eq(60)] # 等于60 df[df['Q1'].ne(60)] # 不等于60 ``` #### 5. 使用`query()`进行筛选 - **直接写SQL-like语句**: ```python df.query('Q1 > Q2 > 90') ``` - **支持变量传递**: ```python a = df['Q1'].mean() df.query('Q1 > @a + 40') df.query('Q1 > `Q2` + @a') ``` #### 6. 使用`eval()`进行筛选 - **与`query()`相似**: ```python df[df.eval("Q1 > 90 > Q3 > 10")] df[df.eval("Q1 > `Q2` + @a")] ``` #### 7. 使用`filter()`进行筛选 - **基于列名或索引进行筛选**: ```python df.filter(items=['Q1', 'Q2']) # 选择Q1和Q2两列 df.filter(regex='Q', axis=1) # 列名包含Q的列 df.filter(regex='e$', axis=1) # 以e结尾的列 df.filter(regex='1$', axis=0) # 索引名以1结尾 df.filter(like='2', axis=0) # 索引中有2的 ``` #### 8. 按数据类型查询 - **筛选特定类型的数据**: ```python df.select_dtypes(include=['float64']) df.select_dtypes(include='bool') df.select_dtypes(include=['number']) df.select_dtypes(exclude=['int']) df.select_dtypes(exclude=['datetime64']) ``` ### 二、数据类型转换 #### 1. 指定数据类型 - **整体指定**: ```python df = pd.DataFrame(data, dtype='float32') ``` - **单独指定**: ```python df = pd.read_excel(data, dtype={'team': 'string', 'Q1': 'int32'}) ``` #### 2. 推断类型 - **自动推断类型**: ```python df.infer_objects() df.infer_objects().dtypes ``` #### 3. 明确转换类型 - **使用to_numeric、to_datetime等函数转换**: ```python m = ['1', 2, 3] s = pd.to_numeric(m) # 转换成数字 pd.to_datetime(m) ``` 通过上述高级操作,我们可以在Pandas中更加灵活地处理数据。这些技巧不仅有助于提高工作效率,还能确保数据的准确性和一致性。掌握这些技能将使你在数据分析领域更具竞争力。
身份认证 购VIP最低享 7 折!
30元优惠券