python学习:pandas+csv+实战读取csv+实战商品房数据统计

目录

安装pandas库

pycharm图形安装

终端安装

直接实战

实战1:我们可以用文本模式读取csv,也可以用pandas模式读取csv

文本读取

pandas读取

实战2:商品房数据统计  csv在标题下面

用文本读取做(主要是学习pandas,不做注释了,后面看情况加)

用pandas读取做


安装pandas库

pycharm图形安装

  1. 打开PyCharm
  2. 选择file
  3. 选择settings
  4. 选择Project: workspace
  5. 选择Python Interpreter
  6. 看看有没有pandas库
  7. 点击+号,搜索pandas,选版本,install package下载,成功左下角会有绿色的提示

终端安装

pip install pyinstaller (-i 镜像源地址) (=默认最新版本)

直接实战

实战1:我们可以用文本模式读取csv,也可以用pandas模式读取csv

文本读取

with open("wuhan2021s1.csv","r",encoding="GBK") as txtfile:
    #1. 先读到列表里 ,每一行是列表里面的一个数据,数据是字符串
    data_lst=txtfile.readlines()#一行一行的读放到列表里
print(data_lst)#输出列表

pandas读取

#打开csv文件   返回的是一个表格,有行索引和列索引,第一行会变成列索引,行索引是从第二行开始从0开始,返回的是二维的dataframe结构,
wuhan=pd.read_csv("wuhan2021s1.csv",encoding="GBK")
print(wuhan)

实战2:商品房数据统计  csv在标题下面

数据来源:武汉市住房和保障房屋管理局

附件中为‘2021年第一季度全市预计达到销售条件的商品房项目清单’,

文件名为‘wuhan2021s1.csv’,文件编码格式为'GBK'。

请分析数据格式及内容,完成以下功能:

输入选项n

1 如果n为'规模升序',输出按照'可售住宅总规模'的数据从小到大排序,并依次输出数据,每行内的数据间以空格间隔,输出

2 如果n为'规模降序',输出按照'可售住宅总规模'的数据从大到小排序,并依次输出数据,每行内的数据间以空格间隔,输出

3 如果n为'区属'中的某个区,如'洪山区', 首先按照文件数据顺序依次每行输出该区属的项目信息,每行内的数据间以空格间隔,输出格式见示例 然后输出该区属内的可售住宅总规模之和,单位为平方米,保留两位小数,输出

4 如果n为'总规模',则输出该文件中所有项目的可售住宅总规模之和,单位为平方米,严格保留两位小数,输出

5 如果n不是以上输入,则输出'错误输入'

用文本读取做(主要是学习pandas,不做注释了,后面看情况加)

with open("wuhan2021s1.csv", "r", encoding='GBK') as f:
    ls = []
    for i in f.readlines()[1:]:
        ls.append(i.strip().split(','))

n = input()
if n == '规模降序':
    for i in sorted(ls, key=lambda x: eval(x[-1]), reverse=True):
        print(' '.join(i))
elif n == '规模升序':
    for i in sorted(ls, key=lambda x: eval(x[-1])):
        print(' '.join(i))
elif n in set([i[1] for i in ls]):
    result=0
    for i in ls:
        if i[1] == n:
            print(' '.join(i))
            result=result+eval(i[-1])
    print("{:.2f}平方米".format(result))

elif n == '总规模':
    print("{:.2f}平方米".format(sum([eval(i[-1]) for i in ls])))
else:
    print("错误输入")

用pandas读取做

import pandas as pd
#用pandas模式读取csv
#打开csv文件   返回的是一个表格,有行索引和列索引,第一行会变成列索引,行索引是从第二行开始从0开始,返回的是二维的dataframe结构,
wuhan=pd.read_csv("wuhan2021s1.csv",encoding="GBK")
#print(wuhan)#自己可以打印表格出来看看
#print(wuhan.dtypes)#dtypes是dataframe结构的属性 可以打印出每列是什么类型  数字会变成对应的数字类型

#总规模求和
#print(wuhan["可售住宅总规模(㎡)"])#找到名为”可售住宅总规模(㎡)“这一列,然后输出成一维表格
total=wuhan["可售住宅总规模(㎡)"]
#print(type(total))#total是series一唯数据类型
#print(sum(total))#可以直接用sum对一维数据表进行求和,也就是对一列进行求和
qushu0=wuhan["区属"]#是series一维数据表类型,找到名为"区属"这一列,然后输出成一维表格
qushu1=list(wuhan["区属"])#一维数据表类型转为列表
qushu2=set(wuhan["区属"])#一维数据表类型转为元组,也等于去重
#print(qushu0)#可以自己打印观看
#print(qushu1)#可以自己打印观看
#print(qushu2)#可以自己打印观看

n=input()#获取一个值
if n=="总规模":
    print(sum(total))#直接对一维数据表求和
elif n in qushu2:#去和元组里的数据进行对比
    area_df=wuhan[wuhan["区属"]==n]#中括号里的是条件,支持这么筛选,找出和n一样的数据
    print(area_df)#打印出和n一样的数据
    print(sum(area_df["可售住宅总规模(㎡)"]))#求和n一样的数据的总规模
#elif n in qushu0.values:#也可以这么写
    #print(wuhan[wuhan["区属"]==n])#在wuhan里找符合参数条件的数据
elif n=="规模升序":
    #排序,返回一个新的,对by对应的列进行排序,ascending是升序降序
    sort_df=wuhan.sort_values(by="可售住宅总规模(㎡)",ascending=True)
    print(sort_df)
elif n=="规模降序":
    #排序,返回一个新的,对by对应的列进行排序,ascending是升序降序
    sort_df=wuhan.sort_values(by="可售住宅总规模(㎡)",ascending=False)
    print(sort_df)
else:
    print("错误输入")

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值