Series 入门(创建和增删改查)

本文深入讲解Pandas库中的Series数据结构,包括创建方法、索引操作、数据的增删改查,以及如何通过字典创建Series,是数据分析和数据科学初学者的必备指南。

Series 是pandas两大数据结构中(DataFrame,Series)的一种。使用pandas 前需要将pandas 模块引入,因为Series和DataFrame用的次数非常多,所以将其引入本地命名空间中会更方便。

 

  1.  
    from pandas import Series, DataFrame
  2.  
    import pandas as pd

因此,一般在代码中看到pd.,都指的是pandas。

1.创建Series

 

Series的定义:Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。

       Series对象本质上是一个NumPy的数组,因此NumPy的数组处理函数可以直接对Series进行处理。但是Series除了可以使用位置作为下标存取元素之外,还可以使用标签下标存取元素,这一点和字典相似。每个Series对象实际上都由两个数组组成:

index: 它是从NumPy数组继承的Index对象,保存标签信息。
values: 保存值的NumPy数组。

 

注意三点:

 1. Series是一种类似于一维数组(数组:ndarray)的对象

 2. 它的数据类型没有限制(各种NumPy数据类型)

 3. 它有索引,把索引当做数据的标签(key)看待,这样就类似字典了(只是类似,实质上市数组)

 4.Series同时具有数组和字典的功能,因此它也支持一些字典的方法

创建数组,例如:

 

  1.  
    In [1]:arr=[1,2,3,4] #创建数组
  2.  
     
  3.  
    In [2]:arr
  4.  
    Out[2]: [1, 2, 3, 4]


创建Series:

 

 

  1.  
    series_1=Series(arr)
  2.  
    series_1
  3.  
    Out[146]: 
  4.  
    0    1
  5.  
    1    2
  6.  
    2    3
  7.  
    3    4
  8.  
    dtype: int64
  9.  
    series_2=Series([1,2,3,4])
  10.  
    series_2
  11.  
    Out[148]: 
  12.  
    0    1
  13.  
    1    2
  14.  
    2    3
  15.  
    3    4
  16.  
    dtype: int64


创建包含多种数据类型的Series:

  1.  
    series_3=Series([1,2,'3',4,'a']) <span style="font-family: Arial, Helvetica, sans-serif;">#包含数字和字符串</span>
  2.  
    series_3
  3.  
    Out[150]: 
  4.  
    0    1
  5.  
    1    2
  6.  
    2    3
  7.  
    3    4
  8.  
    4    a
  9.  
    dtype: object #类型变成了字符串

 

2.Series索引

Series创建后会自动生成索引,默认从0开始

可以指定和修改索引

  1.  
    In [154]: series_4.index=['a','b','c']
  2.  
     
  3.  
    In [155]: series_4
  4.  
    Out[155]:
  5.  
    a 1
  6.  
    b 2
  7.  
    c 3

 

修改索引除了这里的直接修改还有一个reindex()方法。

3.Series增删改查

Series创建后可以对数据进行增删改查

3.1 增:

Series的add()方法是加法计算不是增加Series元素用的。

使用append连接其他Series

3.2删:

  1.  
    In [162]: series_4.drop('a')
  2.  
    Out[162]:
  3.  
    b 2
  4.  
    c 3
  5.  
    dtype: int64

 

3.3 改:

  1.  
    In [170]: series_4['a']=4
  2.  
     
  3.  
    In [171]: series_4
  4.  
    Out[171]:
  5.  
    a 4
  6.  
    b 2
  7.  
    c 3
  8.  
    dtype: int64

 

3.4 查:

通过索引查单值

  1.  
    In [172]: series_4['a']
  2.  
    Out[172]: 4

 

通过索引序列查多值:

 

  1.  
    series_4[['a','b']]
  2.  
    Out[174]:
  3.  
    a 4
  4.  
    b 2
  5.  
    dtype: int64

 

通过布尔类型索引筛选:

  1.  
    In [175]: series_4[series_4>2]
  2.  
    Out[175]:
  3.  
    a 4
  4.  
    c 3
  5.  
    dtype: int64

 

通过位置切片和标签切片查询数据:

  1.  
    series_4
  2.  
    Out[194]:
  3.  
    a 4
  4.  
    b 2
  5.  
    c 3
  6.  
    dtype: int64
  7.  
     
  8.  
    series_4[:2]
  9.  
    Out[195]:
  10.  
    a 4
  11.  
    b 2
  12.  
    dtype: int64
  13.  
     
  14.  
    series_4['a':'c']
  15.  
    Out[196]:
  16.  
    a 4
  17.  
    b 2
  18.  
    c 3
  19.  
    dtype: int64

 

4.通过字典创建Series

  1.  
    series_5=Series({'a':1,'b':2,'c':3})
  2.  
     
  3.  
    series_5
  4.  
    Out[201]:
  5.  
    a 1
  6.  
    b 2
  7.  
    c 3
  8.  
    dtype: int64

 

<think>好的,我现在需要回答用户的问题:“pandas如何对csv文件增删改查”。首先,我要回顾之前的对话历史,用户之前询问了如何使用Python读取xlsx文件并进行增删改查操作,我介绍了openpyxlpandas两种方法。现在用户转向了CSV文件,同样是增删改查,但这次是使用pandas。 首先,我需要确认用户的需求。用户可能已经对pandas有了一定的了解,或者之前接触过处理Excel的情况,现在想扩展到CSV文件。CSVExcel在pandas中的处理有很多相似之处,但也有一些不同点,比如不需要openpyxl引擎,但需要注意编码、分隔符等问题。 接下来,我需要整理pandas处理CSV的基本步骤,包括读取、增删改查以及保存。需要分步骤详细说明,确保用户能逐步操作。同时,要注意对比之前的Excel处理,指出不同之处,比如读取时使用read_csv而不是read_excel,保存时用to_csv而不是to_excel。 然后,考虑到用户可能需要具体的代码示例,我应该提供每个操作的代码片段,并解释每个参数的作用。例如,读取时可能需要处理不同的编码格式(如utf-8或gbk),分隔符(逗号或制表符)等。同时,对于增删改查,需要涵盖常见操作,如添加行、列,修改数据,删除行、列,以及查询特定条件的数据。 另外,需要注意常见问题,比如保存时索引的处理,避免出现多余的索引列。还要提醒用户操作前备份数据,防止数据丢失。此外,可以补充一些高级技巧,如分块处理大文件,处理缺失值,或者合并多个CSV文件,这样用户可以根据需要进一步学习。 需要检查是否有遗漏的步骤或常见的错误点。例如,读取CSV时可能会遇到的编码错误,如何处理?这时需要提到encoding参数的使用。还有,如果CSV文件没有表头,如何指定列名?这需要说明headernames参数的应用。 在结构上,应该先介绍读取保存CSV的基本方法,然后分查、增、改、删四个部分详细说明,每个部分给出代码示例,并解释关键参数。之后可以补充注意事项进阶技巧,帮助用户更好地应用。 最后,确保语言简洁明了,用中文表达,避免使用专业术语过多,必要时进行解释。例如,解释DataFrame是pandas的核心数据结构,类似于表格,方便用户理解。同时,代码注释要清晰,让用户知道每行代码的作用。 总结步骤: 1. 读取CSV文件:使用pd.read_csv,解释常用参数。 2. 保存CSV文件:使用to_csv,注意index参数。 3. 查:显示数据、条件查询、行列选择。 4. 增:添加行、列的方法。 5. 改:按条件修改数据。 6. 删:删除行、列。 7. 注意事项:编码、备份、大数据处理。 8. 进阶技巧:分块处理、合并文件、处理缺失值。 在整理过程中,需要确保每个步骤都有对应的代码示例,并指出可能遇到的问题解决方法。例如,在增的部分,添加行可以使用append(但注意已过时)或concat,需要说明推荐使用concat。添加列则直接赋值即可。 同时,要对比之前的Excel处理,强调CSV更简单,不需要处理多个工作表,但需要注意没有格式信息。可能用户在使用pandas处理CSV时,更关注数据处理而非格式,因此重点放在数据操作上。 需要检查代码的正确性,例如,使用concat时是否正确处理索引,是否忽略索引(ignore_index=True)。在修改数据时,使用loc或条件索引是否正确。 最后,确保整个回答结构清晰,步骤明确,用户能够按照指导一步步操作,并理解每个操作的目的实现方式。同时,提醒用户保存修改后的数据,避免忘记保存导致更改丢失。</think>以下是使用pandas对CSV文件进行增删改查的详细指南: --- ### 一、基础操作流程 ```python import pandas as pd # 📥 读取CSV文件 df = pd.read_csv('data.csv', encoding='utf-8') # 中文文件常用 encoding='gbk' # ✏️ 进行增删改查操作... # 💾 保存修改 df.to_csv('new_data.csv', index=False) # 不保存行索引 ``` --- ### 二、核心操作详解 #### 1️⃣ **查(Read)** - **查看数据概览**: ```python print(df.head()) # 前5行 print(df.tail(3)) # 后3行 print(df.describe()) # 统计摘要 ``` - **条件查询**: ```python # 单条件筛选 filtered = df[df['年龄'] > 25] # 多条件组合 filtered = df[(df['城市'] == '北京') & (df['销售额'] > 10000)] ``` - **行列选择**: ```python # 选择列 names = df['姓名'] # 单列 → Series subset = df[['姓名', '电话']] # 多列 → DataFrame # 选择行 row_3 = df.iloc[2] # 第3行(索引从0开始) ``` --- #### 2️⃣ **增(Create)** - **添加行**: ```python new_row = {'姓名':'王五', '年龄':28, '部门':'市场部'} df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True) ``` - **添加列**: ```python df['入职年份'] = 2023 # 添加常量列 df['月薪'] = df['基本工资'] + df['奖金'] # 计算列 ``` --- #### 3️⃣ **改(Update)** - **按条件修改**: ```python # 修改单个值 df.loc[2, '部门'] = '技术部' # 修改第3行的部门 # 批量修改 df.loc[df['年龄'] < 30, '职级'] = '初级' # 年龄<30的设为初级 ``` --- #### 4️⃣ **删(Delete)** - **删除行**: ```python df = df.drop(index=[0,2]) # 删除第1、3行 df = df[df['状态'] != '已离职'] # 过滤删除离职人员 ``` - **删除列**: ```python df = df.drop(columns=['临时编号', '备注']) # 删除指定列 ``` --- ### 三、注意事项 1. **编码问题**: - 中文文件读取时指定 `encoding='gbk'` 或 `encoding='utf-8-sig'` - 保存时使用 `df.to_csv(..., encoding='utf_8_sig')` 避免乱码 2. **数据备份**: ```python df.to_csv('backup.csv') # 修改前先备份原始数据 ``` 3. **大数据处理**: ```python # 分块读取(处理超大型文件) chunk_iter = pd.read_csv('big_data.csv', chunksize=10000) for chunk in chunk_iter: process(chunk) ``` --- ### 四、进阶技巧 - **处理缺失值**: ```python df.fillna(0) # 用0填充空值 df.dropna(subset=['手机号']) # 删除手机号为空的行 ``` - **合并多个CSV**: ```python import glob all_files = glob.glob("data/*.csv") combined = pd.concat((pd.read_csv(f) for f in all_files)) ``` - **数据类型转换**: ```python df['日期'] = pd.to_datetime(df['日期列']) # 转换为日期类型 ``` --- ### 五、完整操作示例 ```python import pandas as pd # 读取并备份 df = pd.read_csv('员工信息.csv', encoding='gbk') df.to_csv('员工信息_备份.csv', index=False) # 删除测试部门 df = df[df['部门'] != '测试部'] # 给上海员工加薪 df.loc[df['城市'] == '上海', '薪资'] *= 1.1 # 新增绩效列 df['绩效'] = ['A' if x > 10000 else 'B' for x in df['销售额']] # 保存结果 df.to_csv('更新后的员工信息.csv', index=False, encoding='utf_8_sig') ``` --- 通过以上方法,您可以高效地使用pandas完成CSV文件的各类数据操作。建议配合Jupyter Notebook实时查看数据变化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值