Python数据分析之Pandas-过滤与清理
移除重复数据 DataFrame中常常会出现重复行。如下面这个例子: In [295]: data = DataFrame({'k1':['one']*3 + ['two'] * 4, 'k2':[1,1,2,3,3,4,4]}) In [296]: data Out[296]: k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two 3 5 two 4 6 two 4 DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行: In [297]: data.duplicated() Out[297]: 0 False 1 True 2 Fals..
更多Python数据分析之Pandas-重塑
重塑层次化索引 层次化索引为DataFrame数据的重排任务提供了一种良好一致性的方式。主要功能: stack: 将数据的列”旋转“为行 unstack:将数据的行“旋转”为列 接下来看一个行列索引均为字符串的例子: In [169]: data = DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['Ohio','Colorado'],name='sta ...: te'),columns=pd.Index(['one','two','three'],name='number')) In [170]: data Out[170]: number one two three state Ohio 0 1..
更多Python数据分析之Pandas-聚合与合并(二)
索引上的合并 **比如DataFrame中连接键位于其索引中的情况,传入left_index=True或right_index=True以说明索引应该被用作连接键: In [62]: left1 = DataFrame({'key':['a','b','a','a','b','c'],'value':range(6)}) In [63]: right1 = DataFrame({'group_val':[3.5, 7]}, index=['a','b']) In [64]: left1 Out[64]: key value 0 a 0 1 b 1 2 a 2 3 a 3 4 b 4 5 ..
更多Python数据分析之Pandas-聚合与合并(一)
层次化索引 层次化索引让你能在一个轴上拥有多个索引级别。 层次化索引我个人理解是对索引进行了分组,比方说一部分数据是今年的,一部分数据是明年的,可通过层次化索引进行切块以方便后续选取数据 In [263]: data = Series(np.random.randn(10), index=[['2010','2010','2010','2011','2011','2011','2012','2012','2013','2013'],[ ...: 1, 2, 3, 1, 2, 3, 1, 2, 2, 3]]) # 这种形式叫做带有```MultiIndex```索引的格式化输出形式。 In [264]: data Out[264]: 2010 1 1.739760 2 ..
更多Python数据分析之Pandas-数据清理
合并数据集 离散化和面元划分 为了方便分析,连续数据常常被离散化或拆分为“面元”,可以看下面的例子: ages = [20,22,25,27,21,23,37,31,61,55,29] 可以看到上面这组表示年龄的数据非常的杂乱无序,接下来需要用到cat函数来对它们进行分割 In [90]: bins = [18, 25, 35, 60, 100] In [91]: cats = pd.cut(ages, bins) ca In [92]: cats Out[92]: [(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (35, 60], (25, 35], (60, 100], (35, 60], (25, 35]] Length: 11 ..
更多Python数据分析之Pandas-数据文件加载与存储(二)
读取Microsoft Excel文件 Excel作为最典型的表格型数据,我们需要用到ExcelFile对象,首先需要下载安装xlrd和openpyxl包 In [11]: xls_file = pd.ExcelFile('ex1.xlsx') In [12]: table = xls_file.parse('Sheet1') In [13]: table Out[13]: Unnamed: 0 a b c d message 0 0 1 2 3 4 hello 1 1 5 6 7 8 world 2 2 9 10 11 12 foo 用requests与Web AP..
更多Python数据分析之Pandas-数据文件加载与存储(一)
读写文本格式的数据 通过cat 输出文件内容: In [20]: cat ex1.csv a,b,c,d,message 1,2,3,4,hello 5,6,7,8,world 9,10,11,12,foo 由于文件是csv格式,可以使用read_csv读取文件并返回DataFrame: In [23]: df = pd.read_csv('ex1.csv') In [24]: df Out[24]: a b c d message 0 1 2 3 4 hello 1 5 6 7 8 world 2 9 10 11 12 foo 如果想读取没有标题行的文件: In [26]: cat ex2.csv 1,2,3,4,hello 5..
更多Python数据分析之Pandas-Series与DataFrame基本功能(五)
层次化索引 层次化索引让你能在一个轴上拥有多个索引级别。 层次化索引我个人理解是对索引进行了分组,比方说一部分数据是今年的,一部分数据是明年的,可通过层次化索引进行切块以方便后续选取数据 In [263]: data = Series(np.random.randn(10), index=[['2010','2010','2010','2011','2011','2011','2012','2012','2013','2013'],[ ...: 1, 2, 3, 1, 2, 3, 1, 2, 2, 3]]) # 这种形式叫做带有```MultiIndex```索引的格式化输出形式。 In [264]: data Out[264]: 2010 1 1.739760 2 ..
更多Python数据分析之Pandas-Series与DataFrame基本功能(三)
汇总和计算描述统计 pandas中有一些常用的统计方法,主要功能是做约简和汇总统计。 In [188]: df = DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.74, -1.3]], index=['a','b','c','d'], columns=['one','two']) In [190]: df Out[190]: one two a 1.40 NaN b 7.10 -4.5 c NaN NaN d 0.74 -1.3 In [189]: df.sum() Out[189]: one 9.24 two -5.80 dtype: float64 也可以逐列运算: In [191]: d..
更多Python数据分析之Pandas-Series与DataFrame基本功能(四)
如何处理缺失数据 在练习中经常遇到pandas使用浮点值NaN来表示数组中的缺失数据。那我们该如何处理这些缺失数据? In [228]: string_data = Series(['aardvark', 'artichoke', np.nan, 'avocado']) In [229]: string_data Out[229]: 0 aardvark 1 artichoke 2 NaN 3 avocado dtype: object In [230]: string_data.isnull() Out[230]: 0 False 1 False 2 True 3 False dtype: bool 通过isnull函数我们得知了..
更多