一:series
1.常用属性
| loc | 根据行索引获取某行数据,这个是属于:df的对象 |
| iloc | 根据行号获取某行数据,这个是属于:df的对象 |
| dtype | 获取series的元素类型 |
| t | 转置 |
| shape | 获取series的维度 |
| size | 获取series的元素个数 |
| values | 获取series的元素值 |
| index | 获取series的索引,功能类似于keys() |
| name | 获取series的名称 |
2.创造方式
1.通过对象来创建
arr = np.array([1,2,3,4,5]) s1 = pd.series(arr)
2.直接传入
s = pd.series([1,2,3,4,5])
3.index索引传入
s3 = pd.series([1,2,3,4,5], index=['a','b','c','d','e'])
4.元组形式传入
s4 = pd.series((1,3,5),index=['a','b','c'])
5.字典形式传入
s5 = pd.series({'a':1,'b':2,'c':3})3.常用方法
| head(n)/tail(n) | 获取前 n 行 / 后 n 行数据(默认 5 行) |
| unique() | 返回唯一值数组 |
| nunique() | 返回唯一值的数量 |
| value_counts() | 计算值的出现频率 |
| isnull()/notnull() | 检测缺失值 |
| fillna(value) | 填充缺失值 |
| dropna() | 删除缺失值 |
| astype(dtype) | 转换数据类型 |
| apply(func) | 对每个元素应用函数 |
| sort_values()/sort_index() | 按值 / 索引排序 |
二:dataframe
1.常用属性
| values | 返回 dataframe 的底层数据(二维 numpy 数组) |
| columns | 返回列标签 |
| index | 返回行索引 |
| dtypes | 返回各列的数据类型 |
| shape | 返回 dataframe 的形状(行数,列数) |
| size | 返回元素总数(行数 × 列数) |
| t | 返回转置后的 dataframe |
2.常用方法
| head(n)/tail(n) | 查看前 n 行 / 后 n 行 |
| info() | 查看数据基本信息(包括非空值数量、数据类型等) |
| describe() | 生成描述性统计数据(计数、均值、标准差等) |
| drop(columns,axis = 1) | 删除指定列 |
| drop(index,axis = 0) | 删除指定行 |
| fillna(value) | 填充缺失值 |
| dropna() | 删除缺失值 |
| groupby(by) | 按指定列分组 |
| merge(other) | 与另一个 dataframe 合并 |
| pivot_table() | 创建透视表 |
| sort_values(by) | 按指定列排序 |
| sort_index() | 按索引排序 |
| apply(func,axis) | 沿指定轴应用函数 |
| applymap(func) | 对每个元素应用函数(已过时,推荐用map或apply) |
| corr() | 计算列间相关系数 |
三:更改series和dataframe的方法
1.更改series
根据索引直接赋值
s = pd.series([1,2,3], index=['a','b','c']) s['b'] = 10 # 修改单个值 s[['a','c']] = [20, 30] # 修改多个值
添加元素
s['d'] = 40 # 添加单个元素 s = s.append(pd.series([50], index=['e'])) # 添加多个元素(注意:append在新版本中已过时)
删除元素
s = s.drop('e') # 删除指定索引的元素2.更改dataframe
添加列
s = s.drop('e') # 删除指定索引的元素修改列名
df.rename(columns={'old_name': 'new_name'}, inplace=true)
df.columns = ['col1', 'col2', 'col3'] # 批量修改修改值
df.loc[0, 'col1'] = 100 # 通过标签修改 df.iloc[1, 2] = 200 # 通过位置修改
添加行
new_row = pd.dataframe([[1,2,3]], columns=df.columns) df = pd.concat([df, new_row], ignore_index=true) # 使用concat添加行
删除行列
df.drop(columns=['col1'], inplace=true) # 删除列 df.drop(index=[0,1], inplace=true) # 删除行
四:导入导出数据
1.导入数据
从csv文件导入
df = pd.read_csv('file.csv') # 基本用法
df = pd.read_csv('file.csv', sep=';', header=0, index_col=0) # 自定义分隔符、表头、索引列从excel文件导入
df = pd.read_excel('file.xlsx') # 读取第一个工作表
df = pd.read_excel('file.xlsx', sheet_name='sheet2') # 指定工作表从数据库导入
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql_query('select * from table', conn)从json导入
df = pd.read_json('file.json')2.导出数据
导出为csv
df.to_csv('output.csv', index=false) # index=false不导出索引导出为excel
df.to_excel('output.xlsx', sheet_name='data', index=false)导出为json
df.to_json('output.json', orient='records')导出到数据库
df.to_sql('table_name', conn, if_exists='replace', index=false)五:扩展
1.inplace参数:许多修改方法都有inplace参数,设为true时直接修改原对象,不返回新对象;默认false,返回修改后的新对象。
2.链式操作:pandas 支持链式操作,提高代码简洁性:
df = pd.read_csv('data.csv').dropna().rename(columns=str.lower).sort_values('date')3.数据类型转换:使用astype()时要注意数据兼容性,如字符串不能直接转为整数。可先用pd.to_numeric()处理:
df['col'] = pd.to_numeric(df['col'], errors='coerce') # 无法转换的值变为nan
4.处理大型数据集:导入大型 csv 时,可使用chunksize参数分块处理:
for chunk in pd.read_csv('large_file.csv', chunksize=1000):
process(chunk)5.缺失值处理策略:除了fillna()和dropna(),还可使用interpolate()进行插值填充,适合时间序列数据。
6.高效迭代:应避免使用for循环迭代 dataframe,优先使用apply()、map()等向量化操作,或使用itertuples()/iterrows()提高迭代效率。
到此这篇关于pandas中series与dataframe的常用属性及方法的文章就介绍到这了,更多相关pandas中series与dataframe内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论