Python随手查python 学习生活不易 我用python

用python做数据分析1|python中各种数据类型及txt文

2016-04-25  本文已影响2641人  是蓝先生

今天是4.25号。

很快四月也走到了尾声,学期即将过半,我还没有找到理想的实习。不过投出去的文章已经有一篇有了好的结果,另外四篇也期待和祈祷都被录用~~

python爬虫的学习自己大抵学了60%吧,但自己最近在想自己学习python最终目的是想用python来进行数据分析的,爬虫只算是获取数据的第一步,那么接下来是不是应该多学学numpy,pandas以及其他数据分析的库。所以最近还会补充点python中的基础知识,为后面的学习作好准备。


第一部分 数据类型相关知识

能够进行迭代的数据类型有:字符串,列表,字典。

1.数字类型
int(),float()
运算符:%(取余),//(除后取整,例如a=3.8//2 ,结果为1.0)
逻辑运算符:and, or, not
round()作用是四舍五入
break是跳出所在的while或者for循环

2.字符串类型
常用函数:len(),str(),可以通过“+”和“*”来连接;s.replace('a','b')即将字符串s中的 所有a字符用b字符来替换。

常用操作方法.png

如何格式化字符串

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:
'Hello, %s' % 'world'
'Hello, world'
'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

3.列表类型

列表操作1.png 列表操作2.png

4.字典型数据

(1)访问字典中的一项的值:
dictionaryName[key],返回键key对应的值value。

(2)删除字典中的一项:
del dictionaryName[key]

(3)字典的遍历:
设a为一个字典型数据,则
for i in a.keys(),values(),items()经常用到。

(4)判断一个键key知否在字典中:
in 或者not in
eg:'city' in infor.keys()

其他操作方法:


字典的操作.png

5.集合(set)
若s='sunset',a=set(s)
得到a:set(['s','u','n','s','e','t'])
两个集合之间的操作有多种,主要如下:

四种运算.PNG
集合运算.png

第二部分 文件操作相关知识

字符串在python中默认以unicode编码保存的,常见的编码方式有:
(1)ASCII编码
(2)UTF-8编码
(3)GBK编码

(4)Unicode编码
(1)、(2)、(3)通过decode()将字符串解码为unicode,通过encode()将unicode编码字符串转为其他三种编码,

文件一般分为文本文件和二进制文件(除文本以外的文件)
操作文件一般包括:打开文件,(读取、写入、定位、追加、计算)文件,关闭文件。

(1)打开文件
用法f=open(<'xxx文件路径'>,<mode>),其中f是一个变量

Paste_Image.png

(2)文件读取、写入、定位

a)读取文件用法f.read(),f.readline(),f.readlines()三者只是返回值不同,第一个返回的是整个文本的字符串;第二个返回一行的字符串;第三个返回整个文本的列表,其中一行字符串为一个元素。
b)写入文件的用法,使用时需要传入参数file.write(a),file.writelines(a),二者区别在于第一个是写入字符串a到文件file中;第二个是写入列表a到文件file中。

Paste_Image.png Paste_Image.png

完整例子如:
file=open('C:\Users\guohuaiqi\Desktop\1.txt','w') #打开模式要用''括起来
file.writelines(a)或者file.readlines()
file.close


最后贴上一个用于词频统计(仅仅针对英文文章)的代码:

步骤为:
(1)用爬虫获取内容,用空格''replace文章中出现的其他符号,然后保存为text格式文件;
(2)定义一个函数,先用split('')对句子进行分割,然后对一行的单词进行统计;
(3)读取text文件,将每一行句子传入(2)中的函数,执行完毕后,将字典数据转化为list数据然后进行排序。

此外有两点知识新学到如下:
(4)使用如b={}为一个字典数据,可直接用list(b.items())将b转化为列表数据。

(5)使用sorted()函数对列表中元素是cell的数据进行排序
例:student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)]
那么sorted(student_tuples, key=itemgetter(2), reverse=True)表示对student_tuples列表按元组中的第三个元素age进行排序**,其中reverse(布尔值)参数用来标记排序顺序的,True-递减,False-递增(默认)

(6)打开文件的路径时要么为'C:\Users\guohuaiqi\Desktop\1.txt',也可是r'C:\Users\guohuaiqi\Desktop\1.txt',这样r后的字符串都按字面意思而不进行转义。

__author__ = 'guohuaiqi'
#!/usr/bin/env python
# _*_ coding: utf-8 _*_

import requests
from bs4 import BeautifulSoup
import operator

url='https://hbr.org/2016/04/what-we-can-learn-from-one-of-the-worlds-most-mocked-cars'
a=[]
def get_contents(url):
    web_data=requests.get(url)
    soup=BeautifulSoup(web_data.text,'lxml')
    paragraphs=soup.select('div.article.article-first-row p')
    for content in paragraphs:
        b=content.get_text().lower()
        for ch in b:
            if ch in ',().:“”?‘’-':
                b=b.replace(ch,'')
                b=b.replace('\xa0',' ')
        a.append(b)
    file=open('C:\\Users\\guohuaiqi\\Desktop\\1.txt','w')
    file.writelines(a)
    file.close
    print('done!!!')

def words_count(line,wordsCount):
    words=line.split(' ')  #将每一行按空格分割成一个列表
    for word in words:
        if word in wordsCount.keys():  #应该用wordsCount.keys()而不是wordsCount,否则在计数we时会把包含we的单词如were等计算在内
            wordsCount[word]+=1
        else:
            wordsCount[word]=1

wordsCount={}  #wordsCount为一个空字典
def main():
    f=open('C:\\Users\\guohuaiqi\\Desktop\\1.txt','r')
    for line in f.readlines():
        words_count(line,wordsCount)
    pairs=list(wordsCount.items())  #会把字典中的键和值转化为一个元组cell,每一个cell作为list的一个元素返回
    print(sorted(pairs,key=operator.itemgetter(1),reverse=True))
    f.close

if __name__=='__main__':
    main()
上一篇下一篇

猜你喜欢

热点阅读