1. Series
Series 可以看作是竖起来的列表,支持标签索引。
import pandas as pd
s_1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', , , ])
(s_1.index)
Pandas 是 Python 数据分析核心库,介绍 Series 和 DataFrame 基础结构、索引操作、数据查询(loc/iloc)、文件读写(CSV/Excel)、缺失值与重复值处理、布尔索引过滤及数据合并方法。涵盖常用 API 示例,适用于数据处理入门。
Series 可以看作是竖起来的列表,支持标签索引。
import pandas as pd
s_1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', , , ])
(s_1.index)
当加入 index 后,index 的值即为对应数据的行名。Pandas 与 Numpy 的不同在于,Numpy 主要处理数值类型数据,而 Pandas 可处理字符串等混合类型。
print(s_1.values)
import pandas as pd
# 创建 Series
s_1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s_2 = pd.Series(['lily', 'rose', 'jack'])
# (1) 通过标签访问
print(s_1['d']) # 访问单个元素
print(s_1['a':'d']) # 切片访问(包含结束标签)
print(s_1[['a', 'd']]) # 多标签访问
# (2) 通过索引访问
print(s_2[2]) # 整数索引
print(s_2[0:2]) # 整数切片
print(s_2[[0, 2]]) # 整数列表索引
print(s_1[4])
# 删除
s_1 = s_1.drop('a')
# 判断值是否存在
print('jim' not in s_2.values)
# 修改
s_2[0] = 'Peter'
# 从字典创建
dic_1 = {"name1": "Peter", "name2": "tim", "name3": "rose"}
s_4 = pd.Series(dic_1)
print(s_4)
# 重置索引
s_4.index = range(0, len(s_4))
print(s_4)
DataFrame 类似 Excel 表格,由多个 Series 拼接而成。
df.columns:列名df.index:行名import pandas as pd
df = pd.DataFrame(
{'age': [10, 11, 12], 'name': ['tim', 'tom', 'rose'], 'income': [100, 200, 300]},
index=['person1', 'person2', 'person3']
)
print(df)
# 修改列名
a = df.columns
df.columns = range(0, len(df.columns))
print(df.columns)
# 修改行名
print(df.index)
df.index = range(0, len(df.index))
print(df.index)
# 添加列
df['pay'] = [20, 30, 40]
print(df)
# 增加一行
df.loc['person4', ['age', 'name', 'income']] = [20, 'kitty', 200]
print(df)
# 访问某列
print(df.name)
a = df.name
b = df['name']
# 访问某些列
print(df[['age', 'name']])
# 访问行
print(df[0:2])
# 使用 loc 访问
print(df.loc[['person1', 'person3']])
# 访问某个值
print(df.loc['person1', 'name'])
# 删除列(原地)
del df['age']
print(df)
# 删除列(返回新对象)
data = df.drop('name', axis=1, inplace=False)
print(data)
# 删除行(原地)
df.drop('person3', axis=0, inplace=True)
import pandas as pd
import numpy as np
# 生成指定日期 DataFrame
df = pd.DataFrame(
np.arange(30).reshape(5, 6),
index=['20180101', '20180102', '20180103', '20180104', '20180105'],
columns=['A', 'B', 'C', 'D', 'E', 'F']
)
# loc() 方法:基于标签索引
print(df.loc['20180103', 'B']) # 打印某个值
print(df.loc[:, 'B']) # 打印某列
print(df.loc['20180103':, 'B']) # 打印某列切片
print(df.loc['20180103':, ['B', 'D']]) # 打印多列切片
print(df.loc['20180101', :]) # 打印某行
print(df.loc['20180103':, :]) # 打印某行切片
# iloc() 方法:基于位置索引
print(df.iloc[1, 2]) # 获取某个数据
print(df.iloc[:, 2]) # 获取某列
print(df.iloc[:, [1, 3]]) # 获取某几列
print(df.iloc[1, :]) # 获取某行
print(df.iloc[[1, 2, 4], :]) # 获取某些行
# 默认第一行为列名
pd.read_csv('文件名')
# 无列名时设置 header=None
pd.read_csv('文件名', header=None)
pd.read_excel('文件名')
# sep 指定分隔符
pd.read_txt('文件名', sep=',', header=None)
# 导出 CSV,index=True 表示包含行索引
df.to_csv('导出.csv', index=True)
# 导出 Excel 方法类似
df.to_excel('导出.xlsx')
判断空值位置,空值输出 True,否则 False。
填充缺失值,通常将全部缺失值填充为同一数值。
删除包含缺失值的整行数据。
查找重复位置,重复输出 True,否则 False。
# 参数为文件中的列名
duplicated('列名 1', '列名 2')
通过布尔索引提取输入为 True 的整行数据。
使用 drop_duplicates() 删除重复的行。
# 选取好评数大于 17000 的信息
df_1 = df[df['好评数'] > 17000]
# str.contains 对列元素进行匹配,存在输出 True
# na=False 表示缺失项不输出具体信息
series.str.contains('参数', na=False)
使用 &(和)、|(或)组合多个条件。
使用 concat() 函数进行合并。
import pandas as pd
import numpy as np
df_1 = pd.DataFrame(np.arange(12).reshape(3, 4))
df_2 = 2 * df_1
# 竖向合并
new_df1 = pd.concat([df_2, df_1])
# 横向合并
new_df2 = pd.concat([df_1, df_2], axis=1)
# join 参数:inner 表示交集,outer 表示并集
df_3 = pd.DataFrame(np.arange(12).reshape(3, 4), index=['A', 'B', 2])
new_df3 = pd.concat([df_1, df_3], axis=1, join='inner')
new_df4 = pd.concat([df_1, df_3], axis=1, join='outer')

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online