大数据一般是在“云”上玩的,但“云”都是要钱的,而且数据上上下下的也比较麻烦。所以,在本地电脑上快速处理数据的技能还是要的。
pandas
在比赛中学到的一个工具,本地可以在亿级别的数据上进行聚合等操作。内部的数据包括:
"htmlcode">
from pandas import Series, DataFrame s = Series(data=[1, 2, 3], index=['a', 'b', 'c']) df = DataFrame( data=[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ], index=['i1', 'i2', 'i3'], columns=['c1', 'c2', 'c3'] )
如果源数据是格式比较好的CSV(或者是自己加工生成的中间数据),可以直接读取:
df = pandas.read_csv("../volume.csv", header=0)
数据的更新
更新结构
在定义完成之后可以对行、列进行增减(增减数据、修改结构):
"htmlcode">
import pandas as pd df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=[0, 1, 2, 3]) df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], 'B': ['B4', 'B5', 'B6', 'B7'], 'C': ['C4', 'C5', 'C6', 'C7'], 'D': ['D4', 'D5', 'D6', 'D7']}, index=[4, 5, 6, 7]) result = pd.concat([df1, df2])
合并完的结果为:
A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D7
其参数含义如下:
"htmlcode">
import pandas as pd left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) result = pd.merge(left, right, on='key') print(result)
结果为(注意观察与concat不一样的地方):
A B key C D 0 A0 B0 K0 C0 D0 1 A1 B1 K1 C1 D1 2 A2 B2 K2 C2 D2 3 A3 B3 K3 C3 D3
方法的参数有:
"htmlcode">
import pandas as pd left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}, index=['K0', 'K1', 'K2', 'K3']) right = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=['K0', 'K1', 'K2', 'K3']) result = left.join(right) print(result)
输出为:
A B C D K0 A0 B0 C0 D0 K1 A1 B1 C1 D1 K2 A2 B2 C2 D2 K3 A3 B3 C3 D3
数据的查询和分析
基本查询
精确查看单个位置数据的方法:
"htmlcode">
import pandas as pd import numpy as np df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8), 'D': np.random.randn(8)}) result = df.groupby(['A']) print(result.get_group('foo'))
其他分组形式:
"htmlcode">
for name, group in result: print(name) print(group)
对分组的结果可以过滤:
df.groupby('A').B.filter(lambda x : len(x) > 1)
进一步对各个分组进行计算(结果太直观,就不写了):
"htmlcode">
import pandas as pd import numpy as np df = pd.DataFrame(data={ 'A': [1, 1, 3], 'B': [4, 5, 6], 'C': [7, np.nan, 9]}) print(df.groupby('A')['B'].transform(lambda x : x - x.mean()))
输出结果为:
0 -0.5 1 0.5 2 0.0 Name: B, dtype: float64
类似的,可以在分组上使用窗口函数:
• rolling
• resample
• expanding
条件过滤
用一些常用的构造方式,可以有类似SQL的开发效率��:
• tips[tips['time'] == 'Dinner'].head(5)
• tips[(tips['time'] == 'Dinner') & (tips['tip'] > 5.00)]
• tips[(tips['size'] >= 5) | (tips['total_bill'] > 45)]
• frame[frame['col2'].isnull()]
• frame[frame['col1'].notnull()]
最后,如果想图形化看在PyCharm里面需要搞个 plt.show() (其他的IDE并不清楚)。
numpy
比较早接触的numpy,总体上来看处理数据比自带类型方便些:
• np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
• np.array((5, 6, 7, 8))
主要集中在数组、矩阵的处理上!是很多工具的基础。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]