python数据分析与可视化【一】python基础实例

用python做数据分析与可视化(一)
python编程基础
这一块前面我写过博客,奉上链接:python基础

这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一更上numpy与pandas的细节

实训一
1.读取csv文件

import csv
f = open("D:/大学/大三/python数据分析与可视化/源码和视频/列题源代码/Python数据分析与可视化例题源代码/ch2/data/white_wine.csv","r")
reader = csv.reader(f)
data = []
for row in reader:
    data.append(row)
for i in range(5):
    print(data[i])
f.close()
['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality']
['7', '0.27', '0.36', '20.7', '0.045', '45', '170', '1.001', '3', '0.45', '8.8', '6']
['8.1', '0.28', '0.4', '6.9', '0.05', '30', '97', '0.9951', '3.26', '0.44', '10.1', '6']
['7.2', '0.23', '0.32', '8.5', '0.058', '47', '186', '0.9956', '3.19', '0.4', '9.9', '6']
['7.2', '0.23', '0.32', '8.5', '0.058', '47', '186', '0.9956', '3.19', '0.4', '9.9', '6']

2.处理数据查看等级

qulity_list = []
for row in data[1:]:
    qulity_list.append(int(row[-1]))
qulity_count = set(qulity_list)
print("白葡萄酒共有%d种等级,分别是:%r"%(len(qulity_count),qulity_count))
白葡萄酒共有7种等级,分别是:{3, 4, 5, 6, 7, 8, 9}

3.划分子集,并进行统计

content_dict = {}
for row in data[1:]:
    quality = int(row[-1])
    if quality not in content_dict.keys():
        content_dict[quality] = [row]
    else:
        content_dict[quality].append(row)
for key in content_dict:
    print(key,":",len(content_dict[key]))
6 : 1539
5 : 1020
7 : 616
8 : 123
4 : 115
3 : 14
9 : 4

4.计算每个数据集中fixed acidity的均值

mean_list = []
for key,value in content_dict.items():
    sum = 0
    for row in value:
        sum += float(row[0])
    mean_list.append((key,sum/len(value)))
for item in mean_list:
    print(item[0],":",item[1])
    
6 : 6.812085769980511
5 : 6.907843137254891
7 : 6.755844155844158
8 : 6.708130081300811
4 : 7.052173913043476
3 : 7.535714285714286
9 : 7.5

python基础的例子

#字符串常见的方法与属性
str = 'pyth.on12y'
str1 = 'java12j'
print(str + str1)
print(str * 0)
print(str * 2)
suying = str1[0]
suying1 = str[-1]
qiepian = str1[2:3]
str.capitalize()#返回副本,首字母大写
str.count('y')#y出现次数
pyth.on12yjava12j

pyth.on12ypyth.on12y

2
str.endswith('y',)#查看字符串最后或者起始值是不是给定的值,返回布尔数
True
str1.startswith("a")

False

str.find('y')#返回首次出现y的索引   str.index('y')
1
str.split()#分割字符串 none分割空格

[‘pyth.on12y’]

str.strip()#省了或者none删除空白字符串,删除chars指定的字符集
'pyth.on12y'
str.upper()#lower()  大小写
'PYTH.ON12Y'

流程控制

#1.条件语句
co = input("请输入化学分子式:")
if co == 'H20':
    print("水")
elif co == 'NH3':
    print("氨气")
elif co == 'CH3':
    print("shenmeqi")
else:
    print("Not exist")
请输入化学分子式:H20
水
#2.循环语句
#while循环:输出20以内能被3整除的数
i = 0
while i < 20:
    if i % 3 == 0:
        print(i,end = " ")
    i = i + 1
0 3 6 9 12 15 18 
#for循环:奇数变平方,偶数不变
x = [1,2,3,4,5,6,8,10,13]
for i in x:
    if i % 2 == 0:
        print("这是一个偶数:",i)
    else:
        print("这是一个奇数,平方为:",i*i)
这是一个奇数,平方为: 1
这是一个偶数: 2
这是一个奇数,平方为: 9
这是一个偶数: 4
这是一个奇数,平方为: 25
这是一个偶数: 6
这是一个偶数: 8
这是一个偶数: 10
这是一个奇数,平方为: 169

内置数据类型:

#1.列表:有序可变序列,常用方法
list = ['a','b',1,4,'c']
list.append('baidu')#追加元素
print(list)

[‘a’, ‘b’, 1, 4, ‘c’, ‘baidu’]

list1 = [1,3,'a','b']
list1.insert(2,0)#在指定索引处加入元素
print(list1)
[1, 3, 0, 'a', 'b']
list2 = [1,3,'a','b']
list2.index(3)#返回该元素第一次出现的索引
1
list3 = [1,3,'a','b']
list3.remove(3)#从列表中移除第一次出现的改值
print(list3)
[1, 'a', 'b']
list3.pop(1)#从列表指定索引处删除元素并返回
'a'
list1.reverse()#倒派
list1

[1, 3, 0, 'a', 'b']
list.count('a')#该元素出现次数
1
list4 = [1,3,6,0,9]
list4.sort(reverse=False)#排序
print(list4)
list4.sort(reverse=True)
print(list4)
[0, 1, 3, 6, 9]
[9, 6, 3, 1, 0]
#列表推导式:随机生成30个整数构成列表,并计算列表均值,然后用列表中每个元素减去均值所得数值重新构成列表
import random
total = []
for i in range(30):
    total.append(random.randint(1,150))
print("随机数生成的列表",total)
sum = 0
for item in total:
    sum = sum + item
total_m = sum//len(total)
print("新列表:",[(x-total_m) for x in total])  
    
随机数生成的列表 [26, 141, 117, 36, 30, 137, 102, 60, 110, 66, 126, 59, 124, 37, 88, 28, 10, 55, 97, 66, 23, 95, 80, 71, 59, 18, 127, 78, 116, 144]
新列表: [-51, 64, 40, -41, -47, 60, 25, -17, 33, -11, 49, -18, 47, -40, 11, -49, -67, -22, 20, -11, -54, 18, 3, -6, -18, -59, 50, 1, 39, 67]
#元组:有序不可变序列
tup = tuple("bar")
print(tup)
nest_tup = (1,2,3),(4,5)
print("第二个元组:",nest_tup)
print("第三个元组:",tup+nest_tup)
a,b,c = tup
print(a,b,c)
print(tup.count(a))
('b', 'a', 'r')
第二个元组: ((1, 2, 3), (4, 5))
第三个元组: ('b', 'a', 'r', (1, 2, 3), (4, 5))
b a r
1
#字典:无序可变序列
sc = {"NewTon":1642,"maozi":1890,"gu":1999}
print(sc.keys())#返回字典中的所有键
print(sc.values())#返回字典中的所有值

print(sc.get("d",1787))#get()方法
print(sc.items())#返回所有键值对

tp = {"d":1787,"h":1906,"f":1920,"maozi":1890}
sc.update(tp)#将两个字典中的值合并,不重复
print("更新后:",sc)
sc.clear()
print("clear后:",sc)#清空字典
dict_keys(['NewTon', 'maozi', 'gu'])
dict_values([1642, 1890, 1999])
1787
dict_items([('NewTon', 1642), ('maozi', 1890), ('gu', 1999)])
更新后: {'NewTon': 1642, 'maozi': 1890, 'gu': 1999, 'd': 1787, 'h': 1906, 'f': 1920}
clear后: {}
#集合:无序不重复,set()来定义空集合,{}用来定义空字典
set1 = set([0,1,2,3])
set2 = set([1,3,5,7,9])
print(set1.issubset(set2))
print(set1.union(set2))

print(set2.difference(set1))
print(set2.issubset(set1))
False
{0, 1, 2, 3, 5, 7, 9}
{9, 5, 7}
False

函数:比较简单 自己百度理解
文件的操作:
1.打开文件:open()函数
2.读取或写入文件:read(),readline(),readlines(),write(),writelines()等
3.对读取到的数据进行处理
4.关闭文件:close()

#这就只介绍方法把 文件比较麻烦传的话
###open(file_name,access_mode=“r”,buffering=-1):file_name为文件路径,绝对或者相对,
###buffering待打开文件的缓冲模式,可省略,sccess_mode有r:只读,w只写,a:追加
###read():返回字符串类型,size可决定读取大小,byte为单位
###readline():读取文件一行,字符串返回,size可定义读取一行的大小,byte单位
###readlines():读取所有行到列表中,每行一个list的成员,size读取的总长
###用完一定要关闭文件close()
用: with open() as f: 这种语句会自动关闭,不用close()函数

#csv文件:纯文本,以行为单位读取数据,每天记录被分割成字段,得导入csv库
import csv
with open("D:\大学\大三\python数据分析与可视化\源码和视频\列题源代码\Python数据分析与可视化例题源代码\ch2\data\student.csv","r") as f:
    reader = csv.reader(f)
    rows = [row for row in reader]
for item in rows:
    print(item)
    
['No.', 'Name', 'Age', 'Score']
['1', 'mayi', '18', '99']
['2', 'jack', '21', '89']
['3', 'tom', '25', '95']
['4', 'rain', '19', '80']
#写入:write():桌次写入,writelines():一个列表中的所有数据一次性写入,需要换行,
##需加入换行符,同时用”str.join()'的方法将每个变量数据来纳许合成字符串,并增加间隔符:\t
##写入csv文件可调用writer
()方法的writerow()函数将列表中的每个元素捉个写入文件
import csv 
data = [["0","nihao","chinese"],
       ["1","h","13","19"]]
f = open("test.csv","w",newline = '')#不加newline会出现空行
data_out = csv.writer(f)#生成write对象存储器

for d in data:
    data_out.writerow(d)
f.close()
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值