Python 核心语法:Pandas 读写 CSV 与 TSV 文件
一、pandas 文件读取
Pandas 是一个强大的分析结构化数据的工具集,其基础是 Numpy。它广泛用于数据挖掘和数据分析,同时也提供数据清洗功能。
环境准备
安装 Pandas 及相关依赖(如 pymysql, sqlalchemy)可使用 pip 或 conda。
pip install pandas pymysql sqlalchemy
1.1 pandas 操作 CSV
主要方法:read_csv, to_csv。
读取 CSV 文件
import pandas as pd
import os
os.chdir('./data')
data = pd.read_csv("LJhouse.csv", sep=',', usecols=['open', 'high', 'close'])
写入 CSV 文件
data[:10].to_csv("my_file1.csv", sep=',', index=False)
print('写入成功!')
读写 TSV 文件
TSV 文件以 Tab 键为分隔符。
# 写入 TSV
data[:5].to_csv("my_file2.tsv", sep='\t', index=True)
# 读取 TSV
df2 = pd.read_csv("my_file2.tsv", sep='\t', index_col=0)
1.2 Pandas 操作 MySQL
主要方法:read_sql, to_sql。
前期准备
需安装 pymysql 和 sqlalchemy。
连接数据库并写入数据
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test?charset=utf8')
data.to_sql('my_table', con=engine, if_exists='append', index=False)
查看 MySQL 数据
sql_df = pd.read_sql('SELECT * FROM my_table LIMIT 0, 2', con=engine)
1.3 读写 JSON
主要方法:read_json, to_json。
# 读取 JSON
json_df = pd.read_json('./data/test.json', orient='columns', lines=True)
# 写入 JSON
json_df.to_json('./data/test1.json', orient='records', lines=True)
1.4 读写 Excel
主要方法:read_excel, to_excel。
二、Pandas 数据分析
以下通过房产数据集示例演示基本分析步骤。
2.1 加载与查看数据集
import pandas as pd
import numpy as np
house_df = pd.read_csv("./data/LJhouse.csv")
# 查看前 5 行
house_df.head()
# 查看列信息
house_df.info()
# 查看统计指标
house_df.describe(include='all')
# 查看数据形状
house_df.shape
2.2 具体需求分析
1. 查找租金最低和最高的房子
# 最便宜的
house_df.sort_values(by='小区价格', ascending=True).head(1)
# 最贵的
house_df.sort_values(by='小区价格', ascending=False).tail(1)
# 或使用 nlargest/nsmallest
house_df.nlargest(1, '小区价格')
house_df.nsmallest(1, '小区价格')
2. 查找最近新上的房源
house_df.sort_values(by='小区房龄', ascending=False).head(10)
3. 查看所有更新时间
house_df['更新时间'].unique()
2.3 完整代码示例
import pandas as pd
import numpy as np
import os
os.chdir('./data')
# 加载数据集
house_df = pd.read_csv("LJhouse.csv")
# 修改列名(示例)
house_df.columns = ['district', 'address', 'title', 'house_type', 'price', 'area']
# 查看数据
print(house_df.head())
print(house_df.info())
print(house_df.describe())
# 排序筛选
min_price = house_df[house_df['price'] == house_df['price'].min()]
max_price = house_df[house_df['price'] == house_df['price'].max()]
注:实际使用时请根据本地路径调整 os.chdir 及文件路径。

