扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、get() 返回指定键的值,如果值不在字典中返回default值。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武冈网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
语法:dict.get(key,default=None)
参数:
key 字典中要查找的键。
default 如果指定键的值不存在时,返回该默认值值。
例:
dict={'Name':'alex','Age':21}
print("Name is:%s"% dict.get('Name')+"\n"+ "Age is:%d"% dict.get('Age'))
显示结果为:
Name is:alex
Age is:21
2、update() 将一个字典中的值更新到另一个字典中。
语法:dict.update(dict2)
参数:
dict2 添加到指定字典dict里的字典。
例:
dict={'Name':'alex','Age':21}
dict2={'Sex':'female'}
dict.update(dict2)
print("Value is %s" % dict)
显示结果为:
Value is {'Name': 'alex', 'Age': 21, 'Sex': 'female'}
读取json内容:
建立只有‘tz’时区字段的列表。因为不是每个字典实例都有tz字段,所以要加上if 'tz' in rec。否则会报错。
统计每种时区的出现次数:
方法一:
先统计次数,生成{时区1:次数,时区2:次数....}形式的字典。
再对字典进行排序。
统计次数方法(1):
统计次数方法(2):
排序
其中counts.items()是将字典中的键值对以元组的形式放进列表里。
例:counts:
{u'America/Montreal': 9, u'America/Anchorage': 5, u'Asia/Seoul': 5}
counts.items():
[(u'America/Montreal', 9), (u'America/Anchorage', 5), (u'Asia/Seoul', 5)]
而这句:value_key_pairs=[(count,tz) for tz, count in counts.items()]则是对返回的键,值对元组的位置做了调换。
例:[(9, u'America/Montreal'), (5, u'America/Anchorage'), (5, u'Asia/Seoul')]
value_key_pairs.sort()中 list.sort()方法只能用于列表,是对原列表进行排序。默认升序。需要降序则value_key_pairs.sort(reverse=False)
关于排序的知识详细参考:
方法二:使用Counter类
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。
详细参考:
方法三:用pandas计数
注意里面有空值
此时的tz_counts如下。注意空字符串变成了unknow。以及增加了missing计数。
使用前十的数据,利用plot方法生成一张水平条形图。
总结:
1.往字典里存数据需要先初始化字典。可使用defaultdict函数:
2.清洗数据,有的数据没有某个字段,一是要替换掉这些缺失值,可用fillna方法替换。二是要注意有没有空字符串,这种数据可通过布尔型数组索引来替换掉。
3.对某个字段的值的出现次数进行统计,可使用三种方法
(1)新建一个字典,用以统计每个值的出现次数。再将该字典转换为列表,对列表进行排序。
(2)使用counter类进行次数统计并排序。
(3)先将json转换为DataFrame对象,再对其tz字段使用pandas的value_counts()方法进行次数统计并排序。
pandas专门为处理表格和混杂数据设计
import pandas as pd
from pandas import Series,DataFrame
Series 类似于一维数组+索引
data = pd.Series([1,2,3,4,5]) 生成Series数据
data.values data.index
pd.Series([1,2],index = ['a','b']) 设置索引
data['a'] 通过索引选取Series中单个或一组值
data[data%2==0] 进行类似numpy数组的运算index仍会保留
'a' in data
pd.Series(python字典) 可以通过python字典创建Series
可以通过设置index改变Series元素顺序
缺失值用NaN表示
pd.isnull(data) 检测缺失数据
pd.notnull
data1 + data2 可以根据索引自动对齐数据进行运算,类似join操作
data.name data.index.name 可赋值
index可以通过赋值方式修改
pd.DataFrame(XXX)传入元素为等长列表或np数组组成的字典可以生成DataFrame数据,字典key值为列名
frame.head() 前五行
pd.DataFrame(XXX, columns = [xxx], index = [xxxxx]) 可能产生NaN
frame['a'] 取列名为a的一列数据 等价于 frame.a(此时a需要是合理的变量名) 可以以列表形式取多列数据 返回的Series序列索引与原DataFrame相同
frame.loc[0] 行选取
可以用一个Series/值对某列赋值,需要长度相等
对不存在的列赋值可创建新列
del frame[列名] 删除列
通过索引方式返回数据视图,修改此返回数据也会影响源数据,Series.copy()可以创建副本
嵌套字典传给DataFrame,外层字典的键作为列名,内层键作为行索引
frame.T 转置
frame.reindex(新索引列表) 根据新索引重排,若索引值当前不存在则NaN
列可以用columns关键字重新索引
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') ffill实现前向值填充
reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行,列可以用columns关键字重新索引
Series索引
series(索引列表/数值范围切片) 选取对应元素
1、print()函数:打印字符串;
2、raw_input()函数:从用户键盘捕获字符;
3、len()函数:计算字符长度;
4、format()函数:实现格式化输出;
5、type()函数:查询对象的类型;
6、int()函数、float()函数、str()函数等:类型的转化函数;
7、id()函数:获取对象的内存地址;
8、help()函数:Python的帮助函数;
9、s.islower()函数:判断字符小写;
10、s.sppace()函数:判断是否为空格;
11、str.replace()函数:替换字符;
12、import()函数:引进库;
13、math.sin()函数:sin()函数;
14、math.pow()函数:计算次方函数;
15、os.getcwd()函数:获取当前工作目录;
16、listdir()函数:显示当前目录下的文件;
17、time.sleep()函数:停止一段时间;
18、random.randint()函数:产生随机数;
19、range()函数:返回一个列表,打印从1到100;
20、file.read()函数:读取文件返回字符串;
21、file.readlines()函数:读取文件返回列表;
22、file.readline()函数:读取一行文件并返回字符串;
23、split()函数:用什么来间隔字符串;
24、isalnum()函数:判断是否为有效数字或字符;
25、isalpha()函数:判断是否全为字符;
26、isdigit()函数:判断是否全为数字;
27、 lower()函数:将数据改成小写;
28、upper()函数:将数据改成大写;
29、startswith(s)函数:判断字符串是否以s开始的;
30、endwith(s)函数:判断字符串是否以s结尾的;
31、file.write()函数:写入函数;
32、file.writeline()函数:写入文件;
33、abs()函数:得到某数的绝对值;
34、file.sort()函数:对书数据排序;
35、tuple()函数:创建一个元组;
36、find()函数:查找 返回的是索引;
37、dict()函数:创建字典;
38、clear()函数:清楚字典中的所有项;
39、copy()函数:复制一个字典,会修改所有的字典;
40、 get()函数:查询字典中的元素。
…………
【常见的内置函数】
1、enumerate(iterable,start=0)
是python的内置函数,是枚举、列举的意思,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
2、zip(*iterables,strict=False)
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。
3、filter(function,iterable)
filter是将一个序列进行过滤,返回迭代器的对象,去除不满足条件的序列。
4、isinstance(object,classinfo)
是用来判断某一个变量或者是对象是不是属于某种类型的一个函数,如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例,
返回True。如果object不是一个给定类型的的对象, 则返回结果总是False
5、eval(expression[,globals[,locals]])
用来将字符串str当成有效的表达式来求值并返回计算结果,表达式解析参数expression并作为Python表达式进行求值(从技术上说是一个条件列表),采用globals和locals字典作为全局和局部命名空间。
【常用的句式】
1、format字符串格式化
format把字符串当成一个模板,通过传入的参数进行格式化,非常实用且强大。
2、连接字符串
常使用+连接两个字符串。
3、if...else条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。其中if...else语句用来执行需要判断的情形。
4、for...in、while循环语句
循环语句就是遍历一个序列,循环去执行某个操作,Python中的循环语句有for和while。
5、import导入其他脚本的功能
有时需要使用另一个python文件中的脚本,这其实很简单,就像使用import关键字导入任何模块一样。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流