数据分析pandas使用

1、多行pandas DataFrame在jupyter中完整显示?

import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

显示部分行

pd.set_option('display.min_rows', 100)

2、统计某列中每个值出现的频率,并找出频率最多的值

count=df['time'].value_counts()
count.idxmax()

3、统计dataframe中某个字段特定值的数据

c_ip_223=faceB_data_v4.query("c_ip =='*'")
df.query("A==1 & B==4")
c_ip_223.query("sni=='*'| sni=='*'|sni=='*'")

4、jupyter备注字体标成红色

<font color = red>***</font>
<font color=

5、对字段进行分组数量统计

分组并统计字数


data.groupby("place_id").count()

数据分析pandas使用

data.groupby("place_id").size()

数据分析pandas使用

steam_s_ip_count=pd.DataFrame({"sum":steamC_data_v4.groupby(['s_ip','hour_minute']).size()}).reset_index()
steam_s_ip_count.shape[0]
steam_s_ip_count.sort_values(by="sum",ascending=False).head(20)

6、统计Dataframe中每一列独立值/唯一值的个数

len(time_top['client_ip'].unique())

7、获取Dataframe中某些字段数据


data_list = dataframe[['cfg_id','server_ip','client_ip','server_port','client_port','server_locate','client_locate','sni']]
data_list.head(3)

y=data["place_id"]
y.head()

数据分析pandas使用

y=data[["place_id"]]
y.head()

数据分析pandas使用

8、将某个字段设置成索引,并提取索引为9664346的数据

data_list1= data_list.set_index("cfg_id")
faceB_data=data_list1.loc[9664346]

9、将某个列表恢复成数字索引

faceB_data_list=faceB_data.reset_index()

数字索引,并删除之前的旧索引

data = data.reset_index(drop=True)

10、统计列表行数,列数

row_num=df.shape[0]
loc_num=df.shape[1]

11、判断一个值是否为Nan,NULL,并填充

(0)查看df表的所有列的空值情况

print(df.isnull().any(axis=0))

isnull: 判断是否为空。
返回bool类型的值:True or False
any:返回是否至少一个元素为真
all:返回是否所有元素为真
axis=1或0: 1表示横轴,方向从左到右;0表示纵轴,方向从上到下

import pandas as pd
pd.isnull(x)

(1)统计每一列的缺失值数量

print (df.isnull().sum())

(2)统计每一行的缺失值数量

print (df.isnull().sum(1))

(3)使用一个值来填补缺省值

df.fillna(0)

(4)使用前一个值来填充

df.fillna(method='ffill')
df.fillna(method='pad')

(5)使用后一个值来填充

df.fillna(method='bfill')
df.fillna(method='backfill')

(6)不同的列用不同的值填补

df.fillna({'first':1,'seconde':2})

(7)使用该字段已有数据的平均值进行填充


x["age"].fillna(x["age"].mean(),inplace=True)

df.fillna(df.mean())

12、pandas删除指定列

改变原始数据

df.drop(["contact2"],axis=1,inplace=True)

不改变原始数据df

df.drop(["contact2"],axis=1)

13、按照两个列表共有的列作合并,默认为内连接

相同的列为name

df= pd.merge(df1,df2,on='name')

14、删除缺失值

(1)删除表中为空值的行

df.dropna(inplace=True)

(2)删除指定列为空值的行

df=df.dropna(axis=0,subset=["graduated"])

15、判断具体位置的值是否为空值

pd.notnull(df.iloc[row,1])

16、创建一个新列表,并为新列表赋值

new_df=pd.DataFrame(columns=('alumni_relation','name'))
new_df = new_df.append(pd.DataFrame(
        {'alumni_relation': [alumni], 'name': [df.iloc[row, 0]]}), ignore_index=True)

17、pandas读取的nan改成空值

df=pd.read_excel('data/final_samename_part.xlsx',parse_cols='A:F,k',**keep_default_na=False**)

18、修改列名

(1)

df.columns=['name','sex','birthday']

(2)

df.rename(columns={'name':'sex'},inplace=True)

(3)字符串列名变大写

df.rename(columns=str.upper)

(3)字符串列名第一个字母大写,其余小写

df.rename(columns=lambda x:x[:1].upper()+x[1:].lower())

19、按行删除第row行,且不改变源数据

row为要删除的行索引,可以是某一个值,可以是列表

df.drop(labels=row,axis=0,inplace=None)

20、pandas在后面增加一列value

df['value']=None

21、DataFrame数据展示

df.head(n)
df.tail(n)
df.sample(n)

22、读写csv文件

(1)分块提取,逐块提取文件设置每块读取的行数chunksize()

chunker = pd.read_csv('ls.csv' , chunksize=4)
for piece in chunker:
   pass

(2)读取任意大小的块

df = pd.read_csv('ls.csv' , iterator=True)
df.get_chunk(4)

(3)将待保存的df文件打印

import sys
df.to_csv(sys.stdout)
df.to_csv(sys.stdout,index=False)

23、读写Excel文件

Excel文件是以制表符分隔列,也存在多个工作表sheet

df = pd.read_excel('ls.excel' , sheet_name='first')
df = pd.read_excel('ls.excel' , sheet_name=['first','second'])
df['first']
df.to_excel('ls.excel')

24、查看非缺失值样本的数量

df.count()

25、行列索引(筛选过滤)

(1)对行进行索引

df.reindex([1,2,5])

(2)对列进行索引

df.reindex(columns=[1,2,5])

26、层次级索引

一个轴上包含多个索引级别

27、排序

(1)按照a列的值进行排序

df.sort_values('a')

(2)按照索引进行排序
默认ascending=’True’升序

df.sort_index(ascending='False')

(3)随机重排

sampler = np.random.permutation(10)
>>>array([5,3,6,2,9,0,7,1,4,8])
df.take(sampler)
df.sample(len(df))

28、交叉表-设置一个列索引、一个行索引统计数据频次

table=pd.crosstab(tab3["user_id"],tab3["aisle"])
table.head()

数据分析pandas使用

29、读取一个没有表头的csv文件,并不以第一行作为表头,添加自定义表头


tab=pd.read_csv("./data/242/res.csv",sep="\t",header=None)

tab.columns=['ip','cfg_id','count']
tab=pd.read_csv("./data/242/res.csv",sep="\t",header=None,names=('ip','cfg_id','count'))

30、将行数据转为列数据

数据分析pandas使用
df=df0.pivot(index='num',columns='let',values='C').rename_axis(columns=None).reset_index()

数据分析pandas使用

31、将列数据转为行数据

数据分析pandas使用
new_df=pd.melt(df,id_vars='num',var_name='let',value_name='C')
new_df

数据分析pandas使用

final_df=new_df.dropna(axis=0,subset=["C"]).reset_index()
final_df

数据分析pandas使用

32、将某列数据Series转成列表list

x=data1["5423269"].tolist()

33、统计一个列表中不同元素的个数,并转成字典形式

from collections import Counter
c = Counter(result.tolist())
dict(c)

34、将dataframe中的数据转成np.array,舍掉索引列

data4=data4.values
time=data4["time"].values

数据分析pandas使用

35、将dataframe中的数据转成整数

data2=data1.astype(int)

36、找出dataframe中的重复数据,并删除


dul_index=data1.loc[data2.duplicated(subset['a','b','c'],keep='first')].index
data2=data2.drop(labels=dul_index)

data1.drop_duplicates(subset=["b","c"],keep="first",inplace=True)

37,统计某个字段place_id的个数,并保留次数大于3的数据dataframe

place_count=data.groupby("place_id").size()
data=data[data["place_id"].isin(place_count[place_count>3].index)]

38,求某个字段的平均值(计算时不包括字段中的空值)

数据分析pandas使用
a['age'].mean()
>>>38.0

39,Dataframe转换成字典

数据分析pandas使用

; 1、 x.head().to_dict()

结果为一个二维字典,一列字段为一个字典

数据分析pandas使用

2、 x.head().to_dict(orient="records")

结果为字典列表,一行数据为一个字典

数据分析pandas使用

; 40,Dataframe数据替换,当缺失值不是NAN,NULL时,先替换成np.nan,再处理

cancer=cancer.replace(to_replace="?",value=np.nan)

41,查看Dataframe中各个字段是否含有缺失值

df.isnull().any()

42,loc与iloc的使用

loc[1,'name']
iloc[1,2]

df.iloc[:,1:-1]

Original: https://blog.csdn.net/Sshang_/article/details/117079440
Author: YYG_HRZ
Title: 数据分析pandas使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/755342/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球