当前位置: 首页 > news >正文

Python核心语法-Pandas读写csv和tsv文件 - 努力-

一、pandas文件读取

python跨平台,Windows,MacOS,Linux都可以运行。功能比Excel,PowerBI tableau等软件强大。Python在非结构化数据(文本,图像)和深度学习领域更有优势。
numpy(Numerical Python)是Python语言的一个扩展程序库。是一个运行速度非常快的数学库,主要用于数组计算。

Pandas 是一个强大的分析结构化数据的工具集。它的使用基础是Numpy(提供高行呢个的矩阵运算)。用于数据挖掘和数据分析,同时也提供数据清洗功能。
Matplotlib是一个功能强大的数据可视化开源Python库。
Seaborn是一个Python数据可视化开源库。建立在Matplotlib之上,并继承了pandas的数据结构。面向数据集的API,与pandas配合使用更方便。

环境准备

anaconda:
在这里插入图片描述

cmd 启动 进conda base
conda install 包名字
或者 Anaconda prompt 以管理员身份启动。

在这里插入图片描述
conda 命令:

conda install 包名字
conda create  -n 虚拟环境名字
conda activate 
conda deactivate
conda remove -n
conda list env
conda search pymysql

pip安装:

pip install 包名字

使用pip安装时要指定安装源。
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple/

pip install  pymysql 
pip install  pymysql == 1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install sqlalchemy
pip install sqlalchemy == 2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 版本错误 执行如下:
pip uninstall  sqlalchemy
pip install  sqlalchemy ==1.4.31

2.1 pandas操作csv

方法:
read_xxx
to_xxx

pandas.read_csv(文件路径,分隔符默认',',指定读取的列名)

step1.导包,修改相对路径的位置;(引入文件)

import pandas as pd
import numpy as np
import osfrom spyder_kernels.utils.lazymodules import pandasos.chdir(r'D:\python_work\python_work\day02') #  修改相对路径
# 解决中文显示问题,
import matplotlib as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  #如果是Mac本,不支持SimHe的时候,可以修改为 'Microsoft YaHei' 或者 'Arial Unicode MS'
plt.rcParams['axes.unicode_minus'] = False

step2.读取csv文件。

# 1. Pandas操作csv 文件;
data = pd.read_csv("./data/LJhouse.csv",sep=',',usecols=['open','hign','close','close'])  # 用df
data

step3.写入csv文件。

# 2. Pandas操作csv 文件,保存为csv文件  ;把读取到的数据保存为csv文件 写到文件中;
data[:10].to_csv("./data/my_file1.csv",sep=',',index=False)  # 不要索引列 index=False
print('写入成功!')

step4.读写tsv文件。

# 3.特殊csv文件 tsv 文件
# tsv文件以 tab 键为分隔符
data[:5].to_csv("./data/my_file2.tsv",sep='\t',index=True)  # 要索引;  右键刷新data
print('写入成功!')# 4. 读取tsv 文件
df2 = pd.read_csv("./data/my_file2.tsv",sep='\t',index_col=0)  # 第一列设置为索引列 index_col=0
df2

完整代码:

import pandas as pd
import numpy as np
import osfrom spyder_kernels.utils.lazymodules import pandasos.chdir(r'D:\python_work\python_work\day02') #  修改相对路径# 解决中文显示问题,
import matplotlib as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  #如果是Mac本,不支持SimHe的时候,可以修改为 'Microsoft YaHei' 或者 'Arial Unicode MS'
plt.rcParams['axes.unicode_minus'] = False# 1. Pandas操作csv 文件;
data = pd.read_csv("./data/LJhouse.csv",sep=',',usecols=['open','hign','close','close'])  # 用df
data# 2. Pandas操作csv 文件,保存为csv文件  ;把读取到的数据保存为csv文件 写到文件中;
data[:10].to_csv("./data/my_file1.csv",sep=',',index=False)  # 不要索引列 index=False
print('写入成功!')pd.read_csv("./data/test.csv")# 3.特殊csv文件 tsv 文件
# tsv文件以 tab 键为分隔符
data[:5].to_csv("./data/my_file2.tsv",sep='\t',index=True)  # 要索引;  右键刷新data
print('写入成功!')# 4. 读取tsv 文件
df2 = pd.read_csv("./data/my_file2.tsv",sep='\t',index_col=0)  # 第一列设置为索引列 index_col=0
df2

2.2 Pandas操作mysql

方法:
read_sql
to_sql

前期准备:anaconda需要安装模块:pymysql 和sqlalchemy
管理员运行anaconda prompt , 安装pymysql 和sqlalchemy ;

 pip install 模块名
pip install pymysql
pip install  pymysql 
pip install  pymysql == 1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install sqlalchemy
pip install sqlalchemy == 2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/

运行版本有问题执行如下:

# 版本错误 执行如下:
pip uninstall  sqlalchemy
pip install  sqlalchemy ==1.4.31

查看mysql表;

 show databases;use test;
show tables;

step1.导入包

#2.导包
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
import os
import pymysqlos.chdir(r'F:\Dev\Python_Code\Python_numpy')
# 1.准备写到mysql数据表的数据 
data = pd.read_csv("./data/my_file2.csv",sep=',') # encoding='gbk'  ,index_col=0
data

运行如下图:

在这里插入图片描述
step2. 数据写入Mysql数据库

# 3.创建引擎对象
engine = create_engine('mysql+pymysql://root:asdfjkl@localhost:3306/test?charset=utf8')# 4.具体的写数据的动作
#df2 = pd.read_csv("./data/my_file2.tsv",sep='\t',index_col=0)  # 第一列设置为索引列 index_col=0
#df2
# 参数说明:1. 数据表明, 2. 引擎对象, 3. 是否把索引写入数据库, 4. 如果表存在如何处理
data.to_sql('my_table',con=engine,if_exists='append') # index=False,#5. 提示
print('写入成功!')

运行如下图:
在这里插入图片描述

step3.查看MySQL数据。

# df2.to_sql('my_table',con=engine,if_exists='append',index=False)  # if_exists='append'# 6.查看数据
sql_df = pd.read_sql('my_table',con=engine)  # select * from  my_table  limit 0,2sql_df

运行如下图:
在这里插入图片描述

2.3 读写json

read_json
to_json

方法:读取pandas.read_json(typ='frame',lines=False)

step1.读取json文件。

#2.导包
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
import os
import pymysql# 解决中文显示问题,
import matplotlib as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  #如果是Mac本,不支持SimHe的时候,可以修改为 'Microsoft YaHei' 或者 'Arial Unicode MS'
plt.rcParams['axes.unicode_minus'] = Falseos.chdir(r'F:\Dev\Python_Code\Python_numpy')

step2.打印读取到的内容。

# 1.读取json文件。  参数1.文件路径  2.读取的格式 3.是否按行读取;
json_df = pd.read_json('./data/test.json',orient='columns',lines=True)# 2. 打印读取到的内容json_df

step3.写入到json文件。

# 3. 把上述的数据,写到json文件中
json_df.to_json('./data/test1.json',orient='records',lines=True)  # 
print('写入成功')

2.4 读写excel

read_excel
to_excel

二、 Pandas数据分析

Pandas分析房产数据示例步骤:
step1.导入包。

# 导包
import pandas as pd
import numpy as np
import osos.chdir(r'D:\Python_Code\Python_Code\day02')

step2.加载数据集。

# 1.加载数据集
house_df = pd.read_csv("./data/LJhouse.csv")
house_df

step3.查看数据集。

# 3.查看数据集 ;
#  1.查看数据前5行
house_df.head()
#  2.查看列数据分布
house_df.info()
# 3.查看列统计指标 ctrl +回车  house_df.discribe(include = all)
house_df.discribe()  # 默认只统计 数值型数据
# 默认统计所有数据(包括字符串)# 4.查看数据形状house_df.shape  #(2760,13)

step4.分析具体需求。

# 具体需求# 1.找到租金最低,和租金最高的房子
# 思路1 排序
house_df.sort_values(by='小区价格',ascending=True).head(1)  #最便宜的
house_df.sort_values(by='小区价格',ascending=False).tail(1) #最贵的  价格一样的考虑不到# 思路2 最小值 最大值 筛选
house_df[house_df.price==1300]  #house_df.price.min()house_df[house_df.price==house_df.price.max()] house_df[house_df['小区价格']==house_df['小区价格'].min()]# 思路3
house_df.nlargest(1,'小区价格')  # 最大的n个 ,参数1 最大的一个,参数2 列名 思路1的简化版;house_df.nsmallest(1,'小区价格')  # 最小的那个#%%
# 2. 找到最近新上的10套房源house_df.sort_values(by='小区房龄',ascending=False).head(10)
# 不能这么写;
#  house_df.nlargest(10,'小区房龄')  
#%%
# 3.查看所有更新时间
house_df.更新时间.unique()  

Python完整代码:

# 导包
import pandas as pd
import numpy as np
import osos.chdir(r'D:\Python_Code\Python_Code\day02')# F:\Dev\Python_Code\Python_numpy  ctrl +shift +c  项目右键复制路径
# os.getcwd()  # 相对路径hangge#  shift +回车 切换第二个#%%
# 1.加载数据集house_df = pd.read_csv("./data/LJhouse.csv")
house_df# 2.修改列名为英文---------------------------house_df['地址']house_df.columns = ['district ','address' ,'title','house_type ','price ','area ','house_type ','orientation ','floor ','total_floor ','age ','subway ','subway_distance ','subway_line ','subway_name ','subway_direction ','subway_distance ','subway_line ','subway_name ','subway_direction ','subway_distance ','subway_line ','subway_name ','subway_direction ','subway_distance ','subway_line']
# 'district' ,'address' ,'title' ,house_type ,price ,area ,house_type ,orientation ,floor ,total_floor ,age ,subway ,subway_distance ,subway_line ,subway_name ,subway_direction ,subway_distance ,subway_line ,subway_name ,subway_direction ,subway_distance ,subway_line ,subway_name ,subway_direction ,subway_distance ,subway_line# ['id', '小区名称', '小区地址', '小区类型', '小区价格', '小区面积', '小区房型', '小区朝向', '小区楼层', '小区总楼层', '小区房龄', '小区地铁', '小区地铁距离', '小区地铁线路', '小区地铁名称', '小区地铁方向', '小区地铁距离', '小区地铁线路', '小区地铁名称', '小区地铁方向', '小区地铁距离', '小区地铁线路', '小区地铁名称', '小区地铁方向', '小区地铁距离', '小区地铁线路', '小区地铁名称', '小区地铁方向', '小区地铁']house_df#%%
# 3.查看数据集 ;
#  1.查看数据前5行
house_df.head()
#  2.查看列数据分布
house_df.info()
# 3.查看列统计指标 ctrl +回车  house_df.discribe(include = all)
house_df.discribe()  # 默认只统计 数值型数据
# 默认统计所有数据(包括字符串)# 4.查看数据形状house_df.shape  #(2760,13)
#%% md#%%
# 具体需求# 1.找到租金最低,和租金最高的房子
# 思路1 排序
house_df.sort_values(by='小区价格',ascending=True).head(1)  #最便宜的
house_df.sort_values(by='小区价格',ascending=False).tail(1) #最贵的  价格一样的考虑不到# 思路2 最小值 最大值 筛选
house_df[house_df.price==1300]  #house_df.price.min()house_df[house_df.price==house_df.price.max()] house_df[house_df['小区价格']==house_df['小区价格'].min()]# 思路3
house_df.nlargest(1,'小区价格')  # 最大的n个 ,参数1 最大的一个,参数2 列名 思路1的简化版;house_df.nsmallest(1,'小区价格')  # 最小的那个#%%
# 2. 找到最近新上的10套房源house_df.sort_values(by='小区房龄',ascending=False).head(10)
# 不能这么写;
#  house_df.nlargest(10,'小区房龄')  
#%%
# 3.查看所有更新时间
house_df.更新时间.unique()  
http://www.jsqmd.com/news/409235/

相关文章:

  • DP优化学习笔记 - Sail-With
  • 使用若伊框架搭建项目环境 - 努力-
  • 物联网-AMQP协议 - 努力-
  • Kali Linux 安装全攻略:3种方式+常见报错速查(新手不踩坑)
  • Matplotlib简介 - 努力-
  • 抓住AI时代第一波红利:这九大高薪岗位正在“抢人”!
  • 建议收藏!Kali Linux 高频命令速查表(渗透测试必备)
  • 小白程序员必看:具身智能大模型全景图谱(VLM/VLN/VLA/WM/VLX全解析)
  • SpringBoot原理 - 努力-
  • 我让AI通宵读了884条推文,发现了AI Agent的真相
  • 2026最新云南旅游公司品牌top10推荐!云南本地优质旅游服务商权威榜单发布,实力品牌助力舒心出行 - 十大品牌榜
  • 互联网大厂Java小白面试:分布式缓存与消息队列的应用场景解析
  • springboot基于大数据的自助餐厅菜品供应优化与分析预测系统 数据分析可视化大屏系统e8737qr2
  • springboot基于人脸识别的互联网课堂学生考勤系统
  • 一文彻底搞懂世界模型
  • 人间烟火,最抚凡人心
  • Kali Linux 2026零基础入门:保姆级分步图文教程(新手必收藏)
  • 三角底力小练
  • 文献阅读:AppAgent: Multimodal Agents as Smartphone Users
  • 双碳目标下综合能源系统低碳运行优化调度Matlab程序探索
  • 2026宜宾搬家拉货优质品牌推荐指南 - 优质品牌商家
  • “title“: “Java全栈开发面试实录:从基础到实战的深度探索“,
  • 《P2569 [SCOI2010] 股票交易》
  • P7515 [省选联考 2021 A 卷] 矩阵游戏
  • 振石股份在西班牙建风电叶片材料基地,欧洲供应链为何需要它
  • 经典不等式自查
  • 2026最新云南旅游公司品牌top10推荐!云南/本地优质旅游服务商权威榜单发布,实力品牌助力舒心出行 - 十大品牌榜
  • 【报告】西班牙基地的30个月与2.499亿元 振石股份把产能放到欧洲风电供应链周围
  • 2026年广州名表维修推荐评测与排名榜单:当名表需要保养时如何选择可靠服务网点 - 品牌推荐
  • 端到端十年演进