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