pandas 入门

Python pandas是一个强大的数据分析库,适合处理各种数据集。以下是一些入门的基础知识:

1. Pandas基础

Pandas是基于NumPy的专业数据分析工具,它提供了便捷的数据读写操作、SQL的增删改查功能、数据透视表功能等。

1.1 数据结构

Pandas主要有两种数据结构:

  • ​Series​​:类似于一维数组,由索引和值组成。
  • ​DataFrame​​:二维数据结构,类似于表格,有行和列这两个维度。
1.2 数据类型

Pandas支持多种数据类型,包括:

  • ​object​​:相当于Python的字符串类型
  • ​int64​​:整型
  • ​float64​​:浮点型
  • ​bool​​:布尔类型
  • ​datetime64​​:日期和时间类型
  • ​timedelta[ns]​​:时间间隔类型
  • ​category​​:分类类别
import pandas as pd

# 创建Series
ser = pd.Series([1, 2, 3, 4, 5])
print(ser)

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
                   'age': [25, 30, 35, 40, 45],
                   'city': ['New York', 'London', 'Paris', 'Berlin', 'Tokyo']})
print(df)

# 访问数据
print(df['name'][0])  # 访问第一行的名字 Alice
print(df.loc[2, 'age'])  # 访问第三行的年龄 35

# 数据筛选
print(df[df['age'] > 35])  # 筛选出年龄大于35的行

 

2. Pandas的数据读取和写入操作

Pandas支持大部分的主流文件格式进行数据读写,包括:

  • ​文本文件​​:csv, txt等
  • ​Excel文件​​:xls, xlsx等
  • ​SQL文件​​:支持大部分主流关系型数据库
# 读写csv,txt
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
print(ser)
# 创建一个示例DataFrame
data = {'Name': ['John', 'Alice', 'Bob'],
        'Age': [25, 30, 28]}
df = pd.DataFrame(data)
print(df)
# 将DataFrame写入txt文件
df.to_csv('example.txt', index=False) # sep默认为逗号,index 为False不显示行索引
ser.to_csv('example.txt', index=False) # 不是追加重新写入了
# 读取txt文件
new_df = pd.read_csv('example.txt')

print(new_df)

 

 read_csv参数说明

  • filepath_or_buffer:文件路径或缓冲区,可以是绝对路径或相对路径。
  • sep:分隔符,用于分隔文件中的数据。默认为逗号(,)。
  • header:指定列名的行号。默认为第一行。
  • names:指定列名列表。如果不指定,则使用文件中的第一行作为列名。
  • index_col:指定用作索引的列。默认为None,即不创建索引。
  • usecols:指定要读取的列的列名列表。默认为读取所有列。
  • skiprows:跳过指定行数的数据。默认为0,即不跳过任何行。
  • encoding:文件的编码方式。默认为'utf-8'。
  • engine:使用的解析引擎。默认为'c',即使用C引擎,速度快但功能较少;或者使用'python',功能更完备但速度较慢。

如何追加写入? 

1、如果你想把 ​​DataFrame 或 Series 的内容以文本形式追加写入 TXT 文件​​,可以使用 to_string() 方法,然后以 ​​追加模式 ('a')​​ 写入文件。

2、如果你不想用 to_string(),而是想 ​​逐行写入数据​​(比如 CSV 格式或自定义格式),可以手动遍历 DataFrame 或 Series 并写入文件

import pandas as pd

# 示例 DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)

# 1. 将 DataFrame 转换为字符串(表格形式)
df_str = df.to_string(index=False)  # index=False 不显示行索引

# 2. 追加写入 TXT 文件
with open('output.txt', 'a', encoding='utf-8') as f:
    f.write(df_str + '\n\n')  # 写入 DataFrame 并加空行分隔

print("DataFrame 已追加写入 output.txt")

import pandas as pd

# 示例 Series
s = pd.Series([10, 20, 30], name='Numbers')

# 1. 将 Series 转换为字符串
s_str = s.to_string()

# 2. 追加写入 TXT 文件
with open('output.txt', 'a', encoding='utf-8') as f:
    f.write(s_str + '\n\n')  # 写入 Series 并加空行分隔

print("Series 已追加写入 output.txt")
import pandas as pd

# 示例 DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)

# 1. 以追加模式打开文件
with open('output.txt', 'a', encoding='utf-8') as f:
    # 2. 遍历 DataFrame 的每一行
    for _, row in df.iterrows():
        f.write(f"{row['Name']}, {row['Age']}\n")  # 写入 CSV 格式

print("DataFrame 已逐行追加写入 output.txt")


import pandas as pd

# 示例 Series
s = pd.Series([10, 20, 30], name='Numbers')

# 1. 以追加模式打开文件
with open('output.txt', 'a', encoding='utf-8') as f:
    # 2. 遍历 Series 的每一项
    for value in s:
        f.write(f"{value}\n")  # 每行写入一个数字

print("Series 已逐行追加写入 output.txt")

python pandas sql 的增删改查功能

import pyodbc
import pandas as pd

# 数据库连接字符串
conn_str = (
    r'DRIVER={ODBC Driver 17 for SQL Server};'
    r'SERVER=your_server_name;'
    r'DATABASE=your_database_name;'
    r'UID=your_username;'
    r'PWD=your_password;'
)

# 连接到数据库
conn = pyodbc.connect(conn_str)

# 查询SQL数据库并创建DataFrame
query = "SELECT * FROM your_table_name"
df = pd.read_sql_query(query, conn)

# 插入新数据
new_data = {'column1': 'value1', 'column2': 'value2', 'column3': 'value3'}
df.append(new_data, ignore_index=True).to_sql('your_table_name', conn, if_exists='append', index=False)

# 更新数据
df.loc[df['column1'] == 'target_value', 'column2'] = 'new_value'
df.to_sql('your_table_name', conn, if_exists='replace', index=False)

# 删除数据
df_to_delete = df[df['column1'] == 'target_value']
df_to_delete.drop(df_to_delete.index, inplace=True)
df.to_sql('your_table_name', conn, if_exists='replace', index=False)

# 关闭数据库连接
conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值