用python处理结构化的CSV数据,我们自然而然会想到结构化查询语句(SQL),如果在python用sql语法来处理数据,肯定很丝滑。
第一步:安装必备的python包 pandas、pandasql。这是用pip 指定清华大学镜像秒下载秒安装。
python -m pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
python -m pip install pandasql -i https://pypi.tuna.tsinghua.edu.cn/simple/
第二步:引用已经安装好的包
import pandas as pd
from pandasql import sqldf
第三步:数据文件的读取
dfdata = pd.read_csv("data.csv")
第四步:玩转数据的四大操作
我们是用结构化的查询语句,通常对数据做四种类型的操作:数据映射(要查的数据数据列 select 操作)、数据过滤(筛选出想要的数据 where操作)、数据聚合(多维数据的分组统计 group by 操作)、数据联结(整合数据方便阅读 join操作)。
sqldf 数据映射 操作 (不建议使用 select * ):
sqldf("select * from dfdata")
sqldf 数据过滤 操作:
sqldf("select * from dfdata where age=18")
qldf 数据聚合 操作:统计人数的性别分布
sqldf("select sex,count(1) from dfdata group by sex")
sqldf 数据联结 操作:
新增标签,女性朋友 是 巾帼英雄,男性朋友 是 顶天立地。
sqldf('''select t1.*,t2.tag from dfdata t1
left join (
select "男" as sex, "顶天立地" as tag
union all
select "女" as sex, "巾帼英雄" as tag
) t2 on t1.sex=t2.sex
''')
以上一番操作,基本能满足题主 99.999%的需求了吧。
第五步:数据结果的保存
数据保存的方式有两种:一种是追加写(覆盖写少用,说多了都是眼泪)、一种是新建文件。
#### 追加写入数据
f = open("data.csv", "a", encoding="UTF-8")
f.write("\n200,bing,199,man,188")
f.flush()
#### 写入新文件
(sqldf("select * from dfdata where age=18")).to_csv('年龄18岁的人群.csv')
至此,大功完,请小主们 点赞。