dataframe基础
1 当不知道dataframe的列名,但想要输出该列时,可用iloc()函数实现.
import pandas as pd a = pd.DataFrame({'k':[3,4,5,6], 'b':[4,4,2,3], 'c':[4,5,6,3]}) print(a.iloc[:,0]) # 0 4 # 1 4 # 2 2 # 3 3 # Name: b, dtype: int64
import pandas as pd a = pd.DataFrame({'k':[3,4,5,6], 'b':[4,4,2,3], 'c':[4,5,6,3]}) privdsgadhgxhbfgqafehbgfagag 爱共和国
2 dataframe查看每一列是否有缺失值
1 temp = data.isnull().any() #列中是否存在空值
2 print(type(temp))
3 print(temp) #若为False,则无缺失值,为True,则有缺失值
3 dataframe 更换列名和添加列名
a. 更换所有的列名 如下将1,2,3的列名全部更换
事实上不需要这么复杂,直接即不需要程序的第一行,直接第二行也可以。前提是赋的列的个数与列数要相等。
参考:https://www.cnblogs.com/hhh5460/p/5816774.html https://www.cnblogs.com/harvey888/p/6006178.html
1 df=df[[0,1,2,3,4,5,6,7,10]]
2 df.columns=['id','ggid','createtime','sccc','gghyid','sptype','spid','ggzhid','price']
3 print(ad_operation.columns) # 输出所有列名,注意加s
b. 更换特定列名 https://www.cnblogs.com/hhh5460/p/5816774.html
c. 添加大量空列的方法,当用apply()函数处理dataframe的行时,有时会返回多个值,这时需要添加空列来容纳这些值。
方法: 先新建一个dataframe,只赋列名,再将两个表格融合即可
kkk = pd.DataFrame(columns=['a','s','lsadfk']) rrr = pd.merge( left= a, right= kkk, on = ['a'], how= 'left')
4 dataframe获取定位特定元素
注意第一个必须是列名,否则报错
print(ad_operation['ggid'][5])
print(ad_operation[['ggid','bid']]) # 当要输出两列值时,要加[]
5 df是dataframe的数据,df.shape表示的dataframe的行列,df.shape[0]是行数,df.shape[1]是列数,df.shape[2]无效
6 dataframe定位行的方法 iloc()是按照index的序值. loc()是按照index的具体值
http://www.cnblogs.com/qingyuanjushi/p/6085307.html
7 dataframe按某一列的条件删除整行的方法
如下使用isin()函数,加上~时表示包含在isin()的删除,否则留下
isin()括号里面应该是个list
1 m = chengji[~chengji['mes_Score'].isin([0, -1, -2, -3])]
2 n = m[~m['mes_sub_name'].isin(['数学','英语','语文'])]
8 dataframe删除某一列的重复元素,默认只留下第一次出现的
参考: https://www.cnblogs.com/mahailuo/p/8317178.html
9 dataframe删除某一列或几列
huaxue.drop(['mes_sub_name','mes_sub_id'], axis=1, inplace=True) # inplace为True时,直接在原数据上修改
参考:https://blog.csdn.net/songyunli1111/article/details/79306639
10 sort_value()函数
参数: by要与axis对应,axis=0时by中为列名,axis=1时by为行名。
ascending控制升序降序,True为升序,False为降序。
1 ## 参数
2 DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
3 #### 参数说明
4 axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照索引排序,即纵向排序,如果为1,则是横向排序
5 by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名";
6 ascending:布尔型,True则升序,可以是[True,False],即第一字段升序,第二个降序
7 inplace:布尔型,是否用排序后的数据框替换现有的数据框
8 kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心
9 na_position : {‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面
参考: https://blog.csdn.net/wendaomudong_l2d4/article/details/80648633
11 DataFrame.info()
可以输出读入表格的一些具体信息。这对于加快数据预处理非常有帮助。
参考:https://blog.csdn.net/sinat_35512245/article/details/79685891
12 shape用法
df是一个dataframe,df.shape输出的是df的行列,df.shape[0]是行数,df.shape[1]是列数,没有df.shpae[2]。
13 value_counts()
用于统计dataframe某一列不同数据的出现次数,其只能统计某一列的,不能整体统计。与unique()函数功能类似,但前者返回的是一个无重复元素的series,并且有series的长度和类型。后者返回的是一个ndarray。
如下计算abc列不同值出现的次数。
print(alldata.abc.value_counts())
print(alldata['abc'].value_counts()) # 这种写法会报错
14 四分位数的求法
nums是list,如下会将list中的数排序后,输出四分位数和中位数.
import numpy as np np.percentile(nums, (25, 50, 75), interpolation='midpoint')
15 dataframe显示问题,当输出的表格列太多,或元素太长想要显示时,在开头加上即可.
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)
#
pd.set_option('display.width',1000)