函数
pandas的函数应用类似于python里面的map和filter还有reduce函数,这样做的事情是不需要你进行循环就可以把全部数据执行一次。
import pandas as pd
a=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=["a","b","c"])
print(a)
f=lambda x:x.max()-x.min()
b=a.apply(f)
print(b)
a b c
0 1 2 3
1 4 5 6
2 7 8 9
a 6
b 6
c 6
dtype: int64
这样就计算出了每一列的最大值-最小值的情况了。当然你也可以自己定义一个函数,进行应用。
排序
排序 :使用索引排序是使用sort_index
,使用值排序是使用sort_values(by='列名')
代码示例:
import pandas as pd
a=pd.DataFrame([[1,2,3],[4,8,5],[7,6,9]],columns=["a","b","c"])
print(a)
print("--------------")
total=a.sort_values(by='b')
print(total)
a b c
0 1 2 3
1 4 8 5
2 7 6 9
--------------
a b c
0 1 2 3
2 7 6 9
1 4 8 5
唯一值
取唯一值使用方法unique()
统计功能
pandas 可以轻易的进行一些求和和统计数量、最大值,最小值等功能,具体随便一搜都有,也可以求标准差等之类的
代码示例:求标准差
import pandas as pd
a=pd.DataFrame([[1,2,3],[4,8,5],[7,6,9]],columns=["a","b","c"])
print(a['b'].std())
3.0550504633038935
统计每个值出现的次数
import pandas as pd
a=pd.DataFrame([[1,2,3],[4,8,5],[7,6,9]],columns=["a","b","c"])
b=a["a"].value_counts()
print(b)
7 1
1 1
4 1
成员资格,判断数据是否在dataframe中
import pandas as pd
a=pd.DataFrame([[1,2,3],[4,8,5],[7,6,9]],columns=["a","b","c"])
c=a["b"].isin(['12','8'])
#加入数据在dataframe中,返回ture,否则返回False
print(c)
print("-----------")
print(a[c])
0 False
1 True
2 False
Name: b, dtype: bool
-----------
a b c
1 4 8 5
这个有时候还是挺有用的
处理缺失数据
缺失数据为,数据为空,或者你在数据库取出的数据是null/None,之类的,但是你在做计算时,这些空值无法进行计算,所以需要处理
我一般使用方式为:
- 填充空值(fillna)为-99或者其他,然后遇到这些数值再进行逻辑判断
- 直接使用dropna进行删除.
tips:判断某一个值是否为空时我是这样搞的:
np.isnan(Value)
#假如为空就是True
层次化索引
层次化索引,我理解的是在须有某些分组时,使用会比较有效率,官方是这样解释的:让你以低维度的形式,来处理高维度的数据
上个demo:
import pandas as pd
import numpy as np
data=pd.Series(np.random.randn(10),index=[["a","a","a","b","b","b","c","c","d","d"],
[1,2,3,1,2,3,1,2,2,3]])
print(data)
print("--------")
print(data["a"])
a 1 -0.646652
2 1.074914
3 -0.164349
b 1 0.557621
2 -1.079296
3 0.193348
c 1 1.335906
2 1.031765
d 2 -0.900637
3 -1.271147
dtype: float64
--------
1 -0.646652
2 1.074914
3 -0.164349
dtype: float64
创建空Dataframe 循环添加数据
我们在使用python列表时经常创建一个list=[],然后循环append,使用Dataframe也可以这样进行操作。
data=pd.DataFrame(columns=["列名","列名","PM25","列名","列名"])
data=data.append('这里的数据为对象上面列的一行数据')