Pandas50个高级操作,必看!
需积分: 0 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中更加灵活地处理数据。这些技巧不仅有助于提高工作效率,还能确保数据的准确性和一致性。掌握这些技能将使你在数据分析领域更具竞争力。

juan9872
- 粉丝: 514
最新资源
- 神经网络技术探究.docx
- GIS应用河南第二次土地利用调查级数据库管理信息建设.doc
- 分析大数据背景下智能电网动态电力监控问题.docx
- 《电子商务安全》课程一体化教学模式研究.doc
- plc课程方案设计书任务书(09级).doc
- 通信工程施工管理有效策略与信息化管理的应用.docx
- 地产项目管理报建指南.ppt
- ppt模板:IOS风大气创意年终总结工作汇报办公通用.pptx
- 第3章网络营销导向的企业网站研究.ppt
- MATLAB通用函数新编.doc
- 项目管理之动物管理学.docx
- 网络安全技术在民航空管信息系统中应用的研究.docx
- 十字路口交通灯PLC控制程序的研究与方案设计书[1].doc
- 网络信息安全及防护研究.docx
- 网络写作与中学写作教学的新思考.docx
- 学生管理系统java实现.doc