パンダ共通コマンドコレクション

1.ファイルの
読み取り1.csvおよびtxt形式を読み取る場合:
sepは2文字の区切り文字で、デフォルトはカンマです。読み取ったデータが適切に分割されていない場合は、区切り文字に問題がある可能性があります。正しいセパレータ。
エンコーディングはエンコーディングであり、他のエンコーディングが使用されることもあります。文字化けせずに正しく表示したい場合は、多くの事故を減らすことができます。
エンジンは読み取り機であり、このフィールドがないと、データを正しく読み取れない場合があります。

path1 = r'C:\Users\MAYAN\Downloads\人工对话详情8.1.csv'
data1 = pd.read_csv(path1,sep=',',encoding='utf-8',engine='python')
data1.head()

2. Excel形式を読み取る
場合ブック内のテーブルを読み取る場合は、読み取るテーブルの名前と同じsheet_namesを直接追加します。

path1 = r'C:\Users\MAYAN\Downloads\人工对话详情8.1.csv'
data1 = pd.read_excel(path1,encoding='utf-8',sheet_names='Sheet1')
data1.head()

3.同じフォルダ内の複数のファイルを
txt形式の1つのファイルに結合します。

import os

# 获取目标文件夹的路径
path = "F:/bj/新建文件夹/内容"
# 获取当前文件夹中的文件名称列表
filenames = os.listdir(path)
result = "result/merge.txt"
# 打开当前目录下的result.txt文件,如果没有则创建
file = open(result, 'w+', encoding="utf-8")
# 向文件中写入字符
 
# 先遍历文件名
for filename in filenames:
    filepath = path + '/'
    filepath = filepath + filename
    # 遍历单个文件,读取行数
    for line in open(filepath, encoding="utf-8"):
        file.writelines(line)
    file.write('\n')
# 关闭文件
file.close()

エクセルフォーマット:

import os
import pandas as pd
 
# 将文件读取出来放一个列表里面
 
pwd = r'F:/bj/新建文件夹/内容' # 获取文件目录路径
 
# 新建列表,存放文件名
file_list = []
 
# 新建列表存放每个文件数据(依次读取多个相同结构的Excel文件并创建DataFrame)
dfs = []
for root,dirs,files in os.walk(pwd): # 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
  for file in files:
    file_path = os.path.join(root, file)
    file_list.append(file_path) # 使用os.path.join(dirpath, name)得到全路径
    df = pd.read_excel(file_path) # 将excel转换成DataFrame
    dfs.append(df)
 
# 将多个DataFrame合并为一个
df = pd.concat(dfs)
 
# 写入excel文件,不包含索引数据
df.to_excel('test\\result.xls', index=False)

2.
重複を削除する1.重複しているかどうかを判断するために複製され、繰り返される表示はTrueであり、非反復的な表示はFalesです
。2。drop_duplicatesは重複する値を削除し、keep = first、重複の最初の行はデフォルトで保持されます。 、および残りのすべての行が削除されます。keep= Falseの場合、すべての重複を削除し、何も残しません。具体的な例は次のとおりです。

from pandas import Series,DataFrame
s = pd.Series([1,1,1,1,2,2,2,3,4,5,5,5,5])
print(s.duplicated())
#duplicated()得到重复值判断的布尔值,再选择布尔值为False的既为非重复值
print(s[s.duplicated()==False])
#或者直接采用drop_duplicates()去除重复值,返回唯一值
print(s.drop_duplicates())

3.列unique()の一意の値を表示します
4.列nunique()の一意の値の数を計算し
ここに画像の説明を挿入
ます3.置換
1. df.replace(to_replace、value、inplace = False)

df.replace(['A','29.54'],['B',100]) #整体替换
df['aa'].replace('花花','草草',inpalce=True) #局部替换,inplace设置为True,否则不生效
df.replace('[A-Z]','变电站',regex=True,inplace=True) #正则表达式
df['aa'].str.repalce('ab','AB')#替换部分字符串

4つの空の値は、
fillna()を埋めて、空の値を置き換えます

df.fillna("0") #用0替换空值,全局生效

df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=NaN;df2.iloc[2:4,4]=NaN
df2.fillna(method='ffill')#用前面的值来填充
df2.fillna(method='bfill',limit=2)#用后面的值来填充,填充倒数两行
df2.fillna(method="ffill",limit=1,axis=1)#用前面的值横向填充一列

5つのマルチコンディションスクリーニング

ask1 = ask[(ask['队列'].isin(duilie))&(ask['排队目标']!='针对会话')]

第6に、統合ユーザーが今日も
シフトに継続的に入るかどうかを判断し、それをgroupbyと組み合わせて使用​​して、列を上下に移動して判断を容易にします。
順方向または逆方向のシフトは、シフト関数の値によって制御されます。順方向は正の数、逆方向は負の数です。欠落している値はNaNで埋められ、groupby関数のパラメーターは、どのフィールドに基づいてシフトされるかを制御します。

# 向下平移
df['value_shift'] = df.groupby('name')['value'].shift(1)
df
	name	value	value_shift
0	a	1	NaN
1	a	2	1.0
2	a	3	2.0
3	b	4	NaN
4	b	5	4.0
5	c	6	NaN

# 向上平移
df['value_shift_1'] = df.groupby('name')['value'].shift(-1)
df
	name	value	value_shift	value_shift_1
0	a	1	NaN	2.0
1	a	2	1.0	3.0
2	a	3	2.0	NaN
3	b	4	NaN	5.0
4	b	5	4.0	NaN
5	c	6	NaN	NaN

セブン、ピボットテーブル

pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')

#index --索引,左边固定不动,可设置多层索引
pd.pivot_table(df,index=[u'对手',u'主客场'])
#values  需要计算的值
pd.pivot_table(df,index=[u'主客场',u'胜负'],values=[u'得分',u'助攻',u'篮板'])
#aggfun 对数据进行聚合,默认为aggfun='mean'
#aggfunc=[np.sum,np.avg]
#Columns类似Index可以设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式。

 #fill_value填充空值,margins=True进行汇总
 pd.pivot_table(df,index=[u'主客场'],columns=[u'对手'],values=[u'得分'],aggfunc=[np.sum],fill_value=0,margins=1)

8.時間変換と計算
1.日付への文字列変換

 pd.to_datetime('2020-01-01')

2.タイムスタンプを日付に変換します

df['gtime']=pd.to_datetime(df['gtime'],unit='s'))

参照するためのオプションのパラメーターは次のとおり
です。origin:スカラー。デフォルトは「unix」で
、参照日定義します。基準日以降、値は単位番号(単位で定義)として解釈されます。
「unix」(またはPOSIX)時間の場合、原点は1970-01-01に設定されます。
「ユリウス暦」の場合、単位は「D」である必要があり、原点はユリウス暦の先頭に設定されます。ユリウス日番号0は、紀元前4713年1月1日の正午から始まる日として指定されます。
タイムスタンプが変換可能である場合、原点は原点によって識別されるタイムスタンプに設定されます。

時間変換の詳細については、次の記事を参照してください:
https //blog.csdn.net/XiaoMaEr66/article/details/104349986

 df.stack()
 df.set_index(['产品类型','产品名称’]).stack().reset_index()
 效果类似数据透视表,通过index 设置多重索引后,实现透视效果。
 
 df.melt()
pd.melt(df,id_vars=['产品类型','产品名称’],value_vars=['一月销售',‘二月销售’,‘三月销售’],value_name='销售金额’)
id_vars是指普通列的列名,不会被转换,value_vars是指那些需要转换的列名,转换后的列名为value_name

ここに画像の説明を挿入

使用中に発生したいくつかの問題は、ここで次々に要約および更新されます。皆さんが一緒に議論することを歓迎します。

おすすめ

転載: blog.csdn.net/XiaoMaEr66/article/details/108934139